Vergleich der Methoden für den Optischen Fluss in opencv

Bisher habe ich nur mit dem Farnebäck- und TV-L1-Ansatz gearbeitet. Das opencv-Paket hat aber noch ein paar andere interessante Optionen zu bieten. Deshalb vergleichen wir jetzt mal folgende Ansätze:

  1. Simple Flow
  2. Farnebäck
  3. Farnebäck optimiert
  4. TV-L1
  5. TV-L1 optimiert
  6. DIS Flow

Mal sehen, ob die optimierten wirklich besser abschneiden, als die unoptimierten. Als Vergleichsmaß benutzen wir den mittleren Absolutfehler:

$$\begin{equation} \mathrm{MAE} = \frac{\sum_{i=1}^{n} \left| \mathrm{Referenz}_i - \mathrm{Beobachtung}_i \right|} {n} \end{equation} $$
In [273]:
import matplotlib.pyplot as plt
%matplotlib inline

import numpy as np
import pandas as pd
import cv2

import xarray as xr

from analysis_tools import optical_flow as oflow
from analysis_tools import grid_and_interpolation as gi
from standard_config import *
import sys
sys.path.append("{}/utils/tracking".format(local_home_path))
sys.path.append("{}/utils".format(local_home_path))
import load_satellite_data as lsd

sys.path.append("/vols/satellit/home/lenk/utils/tracking")
import tracking_common as tco
import optical_flow_tracking as oft
import cross_correlation_tracking as cct
from skimage.feature import register_translation

import MSGtools as mst
from l15_msevi import msevi_config

import geooperations as go
import fixed_colourbar as fc

from plotting_tools.colormaps import enhanced_colormap2
emap = enhanced_colormap2()

HACI-Fälle laden

Um ein paar Vergleichsfälle zu haben, laden wir uns die HACI-Tracks.

In [5]:
haci_objects = pd.read_csv("{}/HACI_bbox_data/haci-2008-2017-bbox-filtered.csv".format(local_data_path))
In [169]:
haci_objects.head()
Out[169]:
date time id flags t0 t1 l00 l01 c00 c01 ... area_ratio msg_eu_l00 msg_eu_c00 msg_eu_l01 msg_eu_c01 msg_eu_l0 msg_eu_c0 msg_eu_l1 msg_eu_c1 date_str
0 2008-05-06 10:20 2379 0 124 176 293 341 727 807 ... 0.630734 192 572 185 596 209 563 185 606 20080506
1 2008-05-06 10:50 2517 0 130 146 386 391 727 733 ... 0.401786 177 572 176 574 181 565 176 574 20080506
2 2008-05-09 10:00 3198 0 120 126 876 880 682 688 ... 1.000000 104 558 103 560 105 556 103 560 20080509
3 2008-05-11 12:50 3386 0 154 168 821 840 621 645 ... 1.000000 111 540 109 547 112 538 109 547 20080511
4 2008-05-11 12:55 3404 0 155 234 69 109 308 501 ... 0.539773 228 448 221 505 239 436 215 505 20080511

5 rows × 28 columns

In [6]:
dates = [pd.Timestamp(d).strftime("%Y%m%d") for d in haci_objects.date]
dd = [pd.Timestamp(d) for d in dates]
In [7]:
haci_objects = haci_objects.assign(date_str=dates)
haci_objects = haci_objects.assign(date = dd)
In [8]:
haci_objects_2013 = haci_objects[(haci_objects.date >= pd.to_datetime("2013-01-01T0000")) & 
                                 (haci_objects.date <= pd.to_datetime("2013-12-31T2359"))]

Satellitenkoordinatenreferenz laden

In [9]:
slon,slat = mst.get_msg_lon_lat('eu')
hlon = gi.make_hrv_upscaling(slon)
hlat = gi.make_hrv_upscaling(slat)
/vols/satellite/home/lenk/anaconda3/envs/tracking/lib/python3.7/site-packages/h5py/_hl/dataset.py:313: H5pyDeprecationWarning: dataset.value has been deprecated. Use dataset[()] instead.
  "Use dataset[()] instead.", H5pyDeprecationWarning)

Beispielfall

Wir laden uns die HACI-Koordinaten für einen Beispielfall und ermitteln die zugehörigen Zeitschritte und erzeugen Aussschnitte mit Satellitendaten.

In [170]:
case = haci_objects_2013[(haci_objects_2013.date=="2013-06-18") & (haci_objects_2013.id==2687)]
In [173]:
case
Out[173]:
date time id flags t0 t1 l00 l01 c00 c01 ... area_ratio msg_eu_l00 msg_eu_c00 msg_eu_l01 msg_eu_c01 msg_eu_l0 msg_eu_c0 msg_eu_l1 msg_eu_c1 date_str
5952 2013-06-18 13:50 2687 0 166 188 386 392 615 619 ... 0.232558 176 538 175 540 177 536 173 545 20130618

1 rows × 28 columns

In [181]:
case.date.loc[5952]
Out[181]:
Timestamp('2013-06-18 00:00:00')
In [171]:
case_data_path = "{}/HACI_track_data".format(local_data_path)
In [182]:
with xr.open_dataset("{}/track_{}_{}.nc".format(case_data_path,case.date.loc[5952].strftime("%Y%m%d"),case.id.loc[5952])) as file:
    case_data = file.copy()
In [183]:
case_data
Out[183]:
<xarray.Dataset>
Dimensions:  (hx: 153, hy: 153, rax: 306, ray: 153, sx: 51, sy: 51, time: 13)
Coordinates:
  * time     (time) datetime64[ns] 2013-06-18T13:20:00 ... 2013-06-18T14:20:00
    slon     (sx, sy) float64 ...
    slat     (sx, sy) float64 ...
    hlon     (hx, hy) float64 ...
    hlat     (hx, hy) float64 ...
    rlon     (rax, ray) float64 ...
    rlat     (rax, ray) float64 ...
Dimensions without coordinates: hx, hy, rax, ray, sx, sy
Data variables:
    vis006   (time, sx, sy) float64 ...
    vis008   (time, sx, sy) float64 ...
    ir016    (time, sx, sy) float64 ...
    ir039    (time, sx, sy) float64 ...
    wv062    (time, sx, sy) float64 ...
    wv073    (time, sx, sy) float64 ...
    ir087    (time, sx, sy) float64 ...
    ir097    (time, sx, sy) float64 ...
    ir108    (time, sx, sy) float64 ...
    ir120    (time, sx, sy) float64 ...
    ir134    (time, sx, sy) float64 ...
    hrv      (time, hx, hy) float64 ...
    ct       (time, sx, sy) float64 ...
    ctth     (time, sx, sy) float64 ...
    cma      (time, sx, sy) float64 ...
    rx       (time, rax, ray) float64 ...
Attributes:
    title:               Collection of MSG, RADOLAN and Linet data for HACI t...
    institution:         Leibniz Institute for Tropospheric Research
    contact_person:      Stephan Lenk, lenk@tropos.de
    processing_time:     20200221T01:55:51
    author:              Stephan Lenk, lenk@tropos.de
    license:             For non-commercial use only.
    source:              MSG SEVIRI data , NWCSAF products and RADOLAN RX data
    history:             Gridded and aggregated for 5 min time steps from the...
    summary:             Eulerian data stack for the HACI track 20130618_2687...
    region_id:           RADOLAN RX
    spatial_resolution:  3 km x 6km, 1 km x 1 km
    gdal_projection:     +proj=stere +lat_0=90 +lat_ts=60 +lon_0=10 +x_0=0 +y...
In [85]:
tlist = pd.date_range(start = case.date - pd.Timedelta("30min"),
                      end = case.date + pd.Timedelta("30min"),
                      freq = "5min")
In [86]:
# satellite_fields = msevi_config._narrow_channels + ['HRV','CT','CTTH_HEIGHT','CMa']
In [87]:
# sat_data = {ch:[] for ch in ['IR_108','CTTH_HEIGHT']}

# for i,t in enumerate(tlist):
#     sat_obs = lsd.load_satellite_data(t,'IR_108')
    
#     sat_data['CTTH_HEIGHT'].append(mst.get_nwcsaf_prod('CTTH_HEIGHT',t,calibrate=True))
        
#     px_corr = go.parallax_correct_msg(sat_obs,slon,slat,sat_data['CTTH_HEIGHT'][i],'std','eu','rss',3)
        
#     sat_data['IR_108'].append(px_corr)
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
In [88]:
# def get_radar_box_from_sat(sat_row, sat_col, sat_lat, sat_lon, box_size, radar_lat, radar_lon):
#     row_min = sat_row - box_size // 2
#     row_max = sat_row + box_size // 2 + 1
#     col_min = sat_col - box_size // 2
#     col_max = sat_col + box_size // 2 + 1
    
#     lon_min = sat_lon[row_min, col_min]
#     lon_max = sat_lon[row_max, col_max]
#     lat_max = sat_lat[row_min, col_min]
#     lat_min = sat_lat[row_max, col_max]
    
#     r_idx = get_index_kdtree(np.array([[lat_min,lat_max], [lon_min,lon_max]]),radar_lat, radar_lon)
    
#     return r_idx
In [89]:
# def cutout_box(data, row, col, box_size):
#     cutout = gi.cutout_field4box(data,(row,col),box_size)
    
#     return cutout
In [90]:
# def cutout_radar_from_sat(data, row, col, box_size, sat_lat, sat_lon, radar_lat, radar_lon):
#     r_idx = get_radar_box_from_sat(row, col, sat_lat, sat_lon, box_size, radar_lat, radar_lon)
    
#     data_cutout = data[r_idx[0][0]:r_idx[1][0],r_idx[0][1]:r_idx[1][1]]
#     lon_cutout = radar_lon[r_idx[0][0]:r_idx[1][0],r_idx[0][1]:r_idx[1][1]]
#     lat_cutout = radar_lat[r_idx[0][0]:r_idx[1][0],r_idx[0][1]:r_idx[1][1]]
    
#     return data_cutout, lon_cutout, lat_cutout
In [191]:
def normalise2range(data):
    return (data - np.min(data)) / (np.max(data) - np.min(data))

def array_to_256(array):
    return (array*255.999).astype("uint8")

def day_natural_composite(vis006_data,vis008_data,nir016_data,factor=1,gamma=1):
    blue = array_to_256(np.clip(vis006_data/factor,0,1)**(1./gamma))
    green = array_to_256(np.clip(vis008_data/factor,0,1)**(1./gamma))
    red = array_to_256(np.clip(nir016_data/factor,0,1)**(1./gamma))
    
    return np.dstack([red,green,blue]).astype("uint8")

def scale_array_min_max(array_data,range_min=0,range_max=1):
    """
    Scales a array into the chosen range.
    
    Inputs:
    -------
    array_data: numpy array of floats or integers, 2d
        array to scale
    range_min: int or float, default = 0
        minimum value of the range to scale array to,
    range_max: int or float, default = 1
        maximum value of the range to scale array to,
        
    Returns:
    --------
    scaled_array: numpy array of floats, 2d
    """
    # get array extrema
    array_min = np.min(array_data)
    array_max = np.max(array_data)

    # derive conversion parameters
    a = (range_max - range_min) / (array_max - array_min)
    b = range_max - a * array_max

    # scale array
    scaled_array = a * array_data + b
    
    return scaled_array

def add_hrv_texture2nc(nc,hrv):
    nc_lab = color.rgb2lab(nc)
    l_min = nc_lab[...,0].min()
    l_max = nc_lab[...,0].max()
    
    l_hrv_scaled = nc_lab[...,0] * hrv
    l_hrv_scaled = scale_array_min_max(l_hrv_scaled,l_min,l_max)

    nc_lab[...,0] = l_hrv_scaled
    
    return color.lab2rgb(nc_lab)

Test der Methoden

Wir erzeugen für die ersten beiden Ausschnitte Verschiebungsfelder, verschieben den ersten Ausschnitt und berechnen die mittleren Absolutfehler. Als Referenz benutzen wir die eulersche Perspektive.

Vorbereitungen

Als Trackinggrundlage benutzen wir den IR-10,8 µm-Kanal.

In [184]:
tracking_base = case_data.ir108.data
In [229]:
fig,ax = plt.subplots(2,8,figsize=(32,8),sharex=True,sharey=True)
axs=ax.ravel()

for i, tb in enumerate(tracking_base):
    #p = axs[i].pcolormesh(case_data.slon.data,case_data.slat.data,tb,vmin=210,vmax=300,cmap=emap)
    p = axs[i].imshow(tb,vmin=210,vmax=300,cmap=emap)
    axs[i].set_title("t = {} min".format(i*5 - 30))
    axs[i].axis("off")
fig.delaxes(ax[1,5])
fig.delaxes(ax[1,6])
fig.delaxes(ax[1,7])

cbar = fig.colorbar(p, ax=ax.flat,label='BT(10.8 µm) / K')

# Make common axis labels
# fig.text(0.45, 0.02,u'longitude / °E', va='center', ha='center')
# fig.text(0.1, 0.5, u'latitude / °N', va='center', ha='center', rotation='vertical')

plt.savefig("/vols/satellite/home/lenk/example_case_ir108.png",bbox_inches='tight')
In [225]:
fig,ax = plt.subplots(2,8,figsize=(32,8),sharex=True,sharey=True)
axs=ax.ravel()

for i, tb in enumerate(tracking_base):
    nc = day_natural_composite(case_data.vis006.data[i],case_data.vis008.data[i],case_data.ir016.data[i],0.9,1.8)
    p = axs[i].imshow(nc)
    axs[i].set_title("t = {} min".format(i*5 - 30))
    axs[i].axis('off')
fig.delaxes(ax[1,5])
fig.delaxes(ax[1,6])
fig.delaxes(ax[1,7])

#cbar = fig.colorbar(p, ax=ax.flat)
#cbar.ax.set_title(u'BT(10.8 µm)')

# Make common axis labels
#fig.text(0.45, 0.02,u'longitude / °E', va='center', ha='center')
#fig.text(0.01, 0.5, u'latitutde / °N', va='center', ha='center', rotation='vertical')

plt.savefig("/vols/satellite/home/lenk/example_case_nc.png")
In [274]:
def MAE(now,obs):
    mae = np.sum(np.abs(now-obs)) / (now.shape[0]*now.shape[1])
    
    return mae
In [275]:
params = dict()
params['box_size'] = 5
params['upsample_factor'] = 1
In [277]:
flow_methods = {'simple':{'function':'cv2.optflow.createOptFlow_SimpleFlow()','label':'Simple -Flow'},
                'farnebaeck':{'function':'cv2.optflow.createOptFlow_Farneback()', 'label':'Farnebäck Flow'},
                #'farnebaeck_opt':{'function':'oft.calculate_optical_flow_farnebaeck(f0,f1)',
                #                  'label':'Farnebäck-Flow optimiert'},
                'tvl1':{'function':'cv2.optflow.createOptFlow_DualTVL1()','label':'Dual-TV-L1-Flow'},
                'dis_fast':{'function':'cv2.DISOpticalFlow_create(cv2.DISOpticalFlow_PRESET_FAST)',
                            'label':'DIS Flow fast'},
                'dis_medium':{'function':'cv2.DISOpticalFlow_create(cv2.DISOpticalFlow_PRESET_MEDIUM)',
                            'label':'DIS Flow medium'},
                'dis_superfast':{'function':'cv2.DISOpticalFlow_create(cv2.DISOpticalFlow_PRESET_ULTRAFAST)',
                                 'label':'DIS flow very fast'},
                #'xcorr':{'function':'cct.calc_cross_correlation_shift(f0,f1,cc_parameters=params)',
                #         'label': 'Cross correlation tracking'}}
                 'xcorr': {'function':'register_translation(f0,f1)','label':'Cross correlation'}}
In [444]:
fig,ax = plt.subplots(1,3,figsize=(15,5), sharex=True, sharey=True)
p0 = ax[0].imshow(tracking_base[5],vmin=210,vmax=300,cmap=emap)
fc.colourbar(p0)
ax[0].set_title("BT(10.8 µm), t0")
ax[0].axis("off")
p1 = ax[1].imshow(tracking_base[6],vmin=210,vmax=300,cmap=emap)
fc.colourbar(p1)
ax[1].set_title("BT(10.8 µm), t1")
ax[1].axis("off")
diff_plot = ax[2].imshow(tracking_base[6]-tracking_base[5],cmap='RdBu_r',vmin=-20,vmax=20)
fc.colourbar(diff_plot)
ax[2].set_title("(t1 - t0)/ K")
ax[2].axis("off")
plt.savefig("/vols/satellite/home/lenk/bt_difference.png",bbox_inches='tight')

Berechnung der Flussfelder

Im nächsten Schritt berechnen wir die Flussfelder für die gewählten Methoden.

In [337]:
flow_res = {k:[] for k in list(flow_methods.keys())}
In [338]:
flow_res
Out[338]:
{'simple': [],
 'farnebaeck': [],
 'tvl1': [],
 'dis_fast': [],
 'dis_medium': [],
 'dis_superfast': [],
 'xcorr': []}
In [445]:
f0 = tco.transform_array2picture(np.max(tracking_base[5])-tracking_base[5])
f1 = tco.transform_array2picture(np.max(tracking_base[6])-tracking_base[6])
In [446]:
for fm in list(flow_methods.keys()):
    if fm in ['farnebaeck_opt','tvl1_opt']:
        res = eval(flow_methods[fm]['function'])
        
    elif fm in ['xcorr']:
        res = eval(flow_methods[fm]['function'])
        
        res_tuples = []
        for i in range(0,51*51):
            res_tuples.append([-res[0][1],-res[0][0]])
        
        res = np.array(res_tuples).reshape((51,51,2))
        
    else:
        flow = eval(flow_methods[fm]['function'])
        res = flow.calc(f0,f1,None)
    
    flow_res[fm] = res

Verschiebung der Bilder des ersten Zeitschrittes

Mit den Flussfeldern können wir die Bilder des ersten Zeitschrittes verschieben und die Fehler berechnen.

In [484]:
shifted_img = {fm:[] for fm in list(flow_methods.keys())}
mae = {fm:[] for fm in list(flow_methods.keys())}
In [485]:
for fm in list(flow_res.keys()):
    shifted_img[fm] = oflow.morph_trans_opt_flow(tracking_base[5],flow_res[fm])
    
    mae[fm] = MAE(tracking_base[6],shifted_img[fm])

Für den Vergleich ermitteln wir auch noch den MAE für die eulersche Perspektive.

In [486]:
shifted_img['euler'] = tracking_base[6]
mae['euler'] = MAE(tracking_base[5],tracking_base[6])
In [ ]:
shifted_img['xcorr']
In [487]:
mae
Out[487]:
{'simple': 1.2327906189926958,
 'farnebaeck': 0.580077393310265,
 'tvl1': 0.7653068819684742,
 'dis_fast': 0.5014594771241827,
 'dis_medium': 0.5695069204152247,
 'dis_superfast': 0.5187601691657051,
 'xcorr': 0.5695069204152247,
 'euler': 0.5695069204152247}

Wie zu erwarten, schneidet die eulersche Perspektive mit einem MAE von 2.85 relativ schlecht ab und die langrangeschen Ansätze haben geringere MAE-Werte, bis auf das Kreuzkorrelationstracking.

Den geringsten Wert der Optical-Flow-Verfahren hat das Farnebäckverfahren mit 1.67, dann folgt das DIS-Verfahren in der Reihenfolge schnell (1.66) und ultraschnell (1.66), dann das TV-L1-Verfahren (1.68), und das DIS-Verfahren in der Variante medium (1.77), sowie das Simple Tracking (2.48). Die Verfahren mit den anhand der Trackausschnitte optimierten Parametern schneiden schlechter ab als die Standardparameter.

Das Kreuzkorrelationstracking hat einen größeren Fehler als die eulersche Referenz mit einem MAE-Wert von 2.98. Es ist folglich das einzige Verfahren, das keinen Gewinn gegenüber der Variante nicht zu verfolgen bringt.

In [488]:
fig,ax = plt.subplots(1,3,figsize=(15,5), sharex=True, sharey=True)
p0 = ax[0].imshow(tracking_base[5],vmin=210,vmax=300,cmap=emap)
fc.colourbar(p0)
ax[0].set_title("BT(10.8 µm), t0")
ax[0].axis("off")
p1 = ax[1].imshow(tracking_base[6],vmin=210,vmax=300,cmap=emap)
fc.colourbar(p1)
ax[1].set_title("BT(10.8 µm), t1")
ax[1].axis("off")
diff_plot = ax[2].imshow(tracking_base[6]-tracking_base[5],cmap='RdBu_r',vmin=-20,vmax=20)
fc.colourbar(diff_plot)
ax[2].set_title("(t1 - t0)/ K")
ax[2].axis("off")
fig.text(0.74,0.07,'MAE = {:1.2f}'.format(mae['euler']),fontsize=18)
plt.savefig("/vols/satellite/home/lenk/bt_difference_mae.png",bbox_inches='tight')
In [489]:
fig,ax = plt.subplots(2,7,figsize=(28,8),sharex=True,sharey=True)

for i, fm in enumerate(flow_res.keys()):
    h_plot = ax[0,i].imshow(flow_res[fm][:,:,0],vmin=-1,vmax=1,cmap='RdBu_r')
    ax[0,i].set_title("{}".format(flow_methods[fm]['label']))
    #fc.colourbar(h_plot)
    p = v_plot = ax[1,i].imshow(flow_res[fm][:,:,1],vmin=-1,vmax=1,cmap='RdBu_r')
    #ax[1,i].set_title("{}\n vertical flow".format(flow_methods[fm]['label']))
    #fc.colourbar(v_plot)
    
cbar = fig.colorbar(p, ax=ax.flat,label='speed / (px / 5 min)')

# Make common axis labels
fig.text(0.1, 0.72,u'horizontal flow', va='center', ha='center', rotation='vertical',fontsize=16)
fig.text(0.1, 0.3, u'vertical flow', va='center', ha='center', rotation='vertical',fontsize=16)
fig.text(0.135,0.05,'MAE = {:.2f}'.format(mae['simple']),fontsize=18)
fig.text(0.23,0.05,'MAE = {:.2f}'.format(mae['farnebaeck']),fontsize=18)
fig.text(0.32,0.05,'MAE = {:.2f}'.format(mae['tvl1']),fontsize=18)
fig.text(0.41,0.05,'MAE = {:.2f}'.format(mae['dis_fast']),fontsize=18)
fig.text(0.50,0.05,'MAE = {:.2f}'.format(mae['dis_medium']),fontsize=18)
fig.text(0.59,0.05,'MAE = {:.2f}'.format(mae['dis_superfast']),fontsize=18)
fig.text(0.68,0.05,'MAE = {:.2f}'.format(mae['xcorr']),fontsize=18)

plt.savefig("/vols/satellite/home/lenk/trackvergleich0.png", bbox_inches='tight')
In [491]:
fig,ax = plt.subplots(3,8,figsize=(40,15),sharex=True,sharey=True)

for i, fm in enumerate(shifted_img.keys()):
    ax[0,i].imshow(tracking_base[5],vmin=210,vmax=300,cmap=emap)
    if fm == 'euler':
        ax[0,i].imshow(tracking_base[6],vmin=210,vmax=300,cmap=emap)
        ax[0,i].set_title("Euler reference") 
        ax[1,i].imshow(tracking_base[5],vmin=210,vmax=300,cmap=emap)
        ax[2,i].imshow(tracking_base[6]-tracking_base[5],vmin=-10,vmax=10,cmap='RdBu_r')
    else:
        ax[0,i].imshow(tracking_base[6],vmin=210,vmax=300,cmap=emap)
        ax[0,i].set_title("{}".format(flow_methods[fm]['label']))
        ax[1,i].imshow(shifted_img[fm],vmin=210,vmax=300,cmap=emap)
        ax[2,i].imshow(tracking_base[6]-shifted_img[fm],vmin=-10,vmax=10,cmap='RdBu_r')
        
# Make common axis labels
fig.text(0.1, 0.76,u't1 image', va='center', ha='center', rotation='vertical',fontsize=18)
fig.text(0.1, 0.5, u't0 image shifted', va='center', ha='center', rotation='vertical',fontsize=18)
fig.text(0.1, 0.24, u'(t0 shifted - t1)', va='center', ha='center', rotation='vertical',fontsize=18)
fig.text(0.141,0.05,'MAE = {:1.2f}'.format(mae['simple']),fontsize=18)
fig.text(0.219,0.05,'MAE = {:1.2f}'.format(mae['farnebaeck']),fontsize=18)
fig.text(0.297,0.05,'MAE = {:1.2f}'.format(mae['tvl1']),fontsize=18)
fig.text(0.378,0.05,'MAE = {:1.2f}'.format(mae['dis_fast']),fontsize=18)
fig.text(0.456,0.05,'MAE = {:1.2f}'.format(mae['dis_medium']),fontsize=18)
fig.text(0.535,0.05,'MAE = {:1.2f}'.format(mae['dis_superfast']),fontsize=18)
fig.text(0.614,0.05,'MAE = {:1.2f}'.format(mae['xcorr']),fontsize=18)
fig.text(0.693,0.05,'MAE = {:1.2f}'.format(mae['euler']),fontsize=18)

cbar = fig.colorbar(p, ax=ax.flat,label='difference / K')
plt.savefig("/vols/satellite/home/lenk/track_mae_vergleich.png",bbox_inches='tight')

Test der Methoden mit dem ganzen Track

Bis jetzt haben wir uns nur den ersten Schritt angesehen. Vielleicht sehen die Ergebisse bei den anderen Schritten anders aus?

In [514]:
mae = {fm:[] for fm in list(flow_methods.keys())+['euler']}
In [515]:
time = []
In [517]:
for ti in range(1,len(tracking_base)):
    f0 = tco.transform_array2picture(np.max(tracking_base[ti-1])-tracking_base[ti-1])
    f1 = tco.transform_array2picture(np.max(tracking_base[ti])-tracking_base[ti])
    
    flow_res = {k:[] for k in list(flow_methods.keys())}
    
    for fm in list(flow_methods.keys()):
        if fm in ['farnebaeck_opt','tvl1_opt']:
            res = eval(flow_methods[fm]['function'])
            
        elif fm in ['xcorr']:
            res = eval(flow_methods[fm]['function'])

            res_tuples = []
            for i in range(0,51*51):
                res_tuples.append([-res[0][1],-res[0][0]])

            res = np.array(res_tuples).reshape((51,51,2))            
            
        else:
            flow = eval(flow_methods[fm]['function'])
            res = flow.calc(f0,f1,None)

        flow_res[fm] = res
        
    for fm in list(flow_res.keys()):
        shifted_img = oflow.morph_trans_opt_flow(tracking_base[ti-1],flow_res[fm])
    
        mae[fm].append(MAE(tracking_base[ti],shifted_img))
        
    mae['euler'].append(MAE(tracking_base[ti],tracking_base[ti-1]))
    time.append('[{},{}]'.format((ti-1)*5 -30 ,(ti*5)-30))
In [533]:
mae_df = pd.DataFrame(mae)
In [534]:
mae_df
Out[534]:
simple farnebaeck tvl1 dis_fast dis_medium dis_superfast xcorr euler
0 0.391078 0.409585 0.377787 0.344907 0.391078 0.370487 0.615689 0.391078
1 0.394315 0.414036 0.394419 0.383491 0.412053 0.360320 0.394315 0.394315
2 0.506212 0.474184 0.489858 0.394844 0.469795 0.399397 0.657248 0.506212
3 0.518211 0.479521 0.481364 0.438448 0.459219 0.430012 0.518211 0.518211
4 0.518821 0.465966 0.499826 0.419574 0.485293 0.432059 0.518821 0.518821
5 1.229734 0.580077 0.765307 0.501459 0.569507 0.518760 0.569507 0.569507
6 0.720946 0.624866 0.674756 0.583520 0.718260 0.604909 0.718260 0.718260
7 0.882663 0.754719 0.774298 0.740446 0.770656 0.756731 0.882663 0.882663
8 1.012426 0.883474 0.886381 0.780803 0.846137 0.778433 1.012426 1.012426
9 0.999219 0.869879 0.849971 0.818706 0.842738 0.780653 0.999219 0.999219
10 1.057756 0.919227 0.928761 0.866935 0.909428 0.888717 1.057756 1.057756
11 1.215865 1.142414 1.009640 0.991339 1.044097 1.022428 1.215865 1.215865
In [543]:
len(time)
Out[543]:
12
In [554]:
mre_df = mae_df.copy()
for c in mre_df.columns:
    mre_df[c] = mre_df[c] / mre_df.euler
In [624]:
fig,ax = plt.subplots(2,1,figsize=(16,9),sharex=True)
mae_df.plot(ax=ax[0],legend=False)
ax[0].set_ylabel("MAE")
ax[0].set_title("MAE of the example track")

mre_df.plot(ax=ax[1])
ax[1].set_xticks(np.arange(0,12))
ax[1].set_xticklabels(time)
ax[1].set_xlabel("time of the shift relative to CI time / min")
ax[1].set_ylabel("MAE relative to Euler")
plt.legend(bbox_to_anchor=(1.01, 0.5), loc=3, borderaxespad=0.,title="tracking technique")
plt.savefig("/vols/satellite/home/lenk/mae_exampletrack.pdf",bbox_inches='tight')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-624-ec1e7bce7e83> in <module>
      6 mre_df.plot(ax=ax[1])
      7 ax[1].set_xticks(np.arange(0,12))
----> 8 ax[1].set_xticklabels(time)
      9 ax[1].set_xlabel("time of the shift relative to CI time / min")
     10 ax[1].set_ylabel("MAE relative to Euler")

/vols/satellite/home/lenk/anaconda3/envs/tracking/lib/python3.7/site-packages/matplotlib/axes/_base.py in set_xticklabels(self, labels, fontdict, minor, **kwargs)
   3432             kwargs.update(fontdict)
   3433         ret = self.xaxis.set_ticklabels(labels,
-> 3434                                         minor=minor, **kwargs)
   3435         self.stale = True
   3436         return ret

/vols/satellite/home/lenk/anaconda3/envs/tracking/lib/python3.7/site-packages/matplotlib/axis.py in set_ticklabels(self, ticklabels, minor, *args, **kwargs)
   1705                 "3.1; passing them will raise a TypeError in Matplotlib 3.3.")
   1706         get_labels = []
-> 1707         for t in ticklabels:
   1708             # try calling get_text() to check whether it is Text object
   1709             # if it is Text, get label content

TypeError: 'module' object is not iterable
In [531]:
mae_df.index.values
Out[531]:
array(['[-30,-25]', '[-25,-20]', '[-20,-15]', '[-15,-10]', '[-10,-5]',
       '[-5,0]', '[0,5]', '[5,10]', '[10,15]', '[15,20]', '[20,25]',
       '[25,30]'], dtype=object)

Das, was für den ersten Zeitschritt galt, gilt so ähnlich auch für den ganzen Track:

  1. Den höchsten MAE-Wert hat das Kreuzkorrelationsverfahren.
  2. Dann folgt die eulersche Referenz, ohne Tracking.
  3. Die "optimierte" Variante des TV-L1-Verfahrens liegt im gleichen MAE-Bereich, wie die eulersche Referenz. Das kann daran liegen, dass es zu optimiert ist. Es treten immer mal seltsame Pixel auf.
  4. Das einfache Optical-Flow-Verfahren ist zwar besser als die eulersche Referenz, aber wahrscheinlich doch zu einfach.
  5. Die anderen Verfahren sind in etwa auf dem gleichen Niveau. Allerdings haben das TV-L1-, das Farnebäck- und das DIS-Verfahren in der mittleren Variante für einzelne Zeitschritte höhere MAE-Werte als die anderen Verfahren.
  6. Über den ganzen Track haben die schnelle und ultraschnelle Variante des DIS-Verfahrens die geringsten MAE-Werte. Dabei hat die ultraschnelle Variante bei einigen Zeitschritten einen höheren Fehler.
  7. Das DIS-Verfahren in der schnellen Variante hat den geringsten Fehler.
In [546]:
mre_df = mae_df.copy()
In [547]:
mre_df = mae_df.copy()
for c in mre_df.columns:
    mre_df[c] = mre_df[c] / mre_df.euler
In [548]:
fig,ax = plt.subplots(1,1,figsize=(12,7.5))
mre_df.plot(ax=ax)
ax.set_xlabel("Zeitindex der Verschiebung")
ax.set_ylabel("MAE relativ zu Euler")
Out[548]:
Text(0, 0.5, 'MAE relativ zu Euler')
In [115]:
mre_df.mean()
Out[115]:
simple            0.865600
farnebaeck        0.637852
farnebaeck_opt    0.648532
tvl1              0.638719
tvl1_opt          1.004163
dis_fast          0.609599
dis_medium        0.656752
dis_superfast     0.622255
xcorr             1.070805
euler             1.000000
dtype: float64

Über den Track gemittelt sieht die Verteilung des MAE wie folgt aus:

  1. Die Kreuzkorrelation hat einen um 7 % höheren Fehler als die Euler-Referenz.
  2. Das optimierte TV-L1-Verfahren hat einen um ca. 0,4% höheren Fehler.
  3. Das einfache Verfahren hat einen um ca. 14 % niedrigeren Fehler als die Euler-Referenz.
  4. Die anderen Verfahren liegen bei einem etwa 60 % kleineren Fehler als die Euler Referenz.
  5. Sie unterscheiden sich nur wenig, aber den kleinsten Fehler hat das DIS-Verfahren in der schnellen Variante.

Als nächstes sehen wir uns mal mehrere Tracks an. Nicht, dass das nur für diesen Track gilt.

Test der Methoden mit mehreren Tracks

Wir benutzen alle gefilterten HACI-Kandidaten für das Jahr 2013 und sehen uns dann mal an, wie sich der MAE verteilt.

In [567]:
import time, sys
from IPython.display import clear_output
import tqdm

def update_progress(progress):
    bar_length = 20
    if isinstance(progress, int):
        progress = float(progress)
    if not isinstance(progress, float):
        progress = 0
    if progress < 0:
        progress = 0
    if progress >= 1:
        progress = 1

    block = int(round(bar_length * progress))

    clear_output(wait = True)
    text = "Fortschritt: [{0}] {1:.1f}%".format( "#" * block + "-" * (bar_length - block), progress * 100)
    print(text)
In [569]:
def calculate_track_mae(tracking_base_data,flow_method_names):
    mae = {fm:[] for fm in flow_method_names + ['euler']}
    time = []
    
    for ti in range(1,len(tracking_base)):
        f0 = tco.transform_array2picture(np.max(tracking_base[ti-1])-tracking_base[ti-1])
        f1 = tco.transform_array2picture(np.max(tracking_base[ti])-tracking_base[ti])

        flow_res = {k:[] for k in list(flow_methods.keys())}

        for fm in flow_method_names:
            if fm in ['farnebaeck_opt','tvl1_opt']:
                res = eval(flow_methods[fm]['function'])
                
            elif fm in ['xcorr']:
                res = eval(flow_methods[fm]['function'])

                res_tuples = []
                
                for i in range(0,51*51):
                    res_tuples.append([-res[0][1],-res[0][0]])

                res = np.array(res_tuples).reshape((51,51,2))   
            else:
                flow = eval(flow_methods[fm]['function'])
                res = flow.calc(f0,f1,None)

            flow_res[fm] = res

        for fm in list(flow_res.keys()):
            shifted_img = oflow.morph_trans_opt_flow(tracking_base[ti-1],flow_res[fm])

            mae[fm].append(MAE(tracking_base[ti],shifted_img))

        mae['euler'].append(MAE(tracking_base[ti],tracking_base[ti-1]))
        time.append('{}_{}'.format(ti-1,ti))
                    
    mae_df = pd.DataFrame(mae,index=time)
    return mae_df
In [570]:
track_maes = []
time_idx = []
techniques = []
track_ids = []
In [572]:
for j,case in tqdm.tqdm(enumerate(haci_objects_2013.index),total=len(haci_objects_2013.index)):
    case = haci_objects_2013.iloc[j]
    case_id = "{}_{}".format(case.date.strftime("%Y%m%d"),case.id)
    #print(case_id)
    
    try:
        with xr.open_dataset("{}/track_{}.nc".format(case_data_path,case_id) )as file:
            case_data = file.copy()
    

#         tlist = pd.date_range(start = case.date - pd.Timedelta("30min"),
#                           end = case.date + pd.Timedelta("30min"),
#                           freq = "5min")
#         tt = [t.to_pydatetime() for t in tlist]
        
        tracking_base = case_data.ir108.data
#         for i,t in enumerate(tlist):
#             sat_obs = lsd.load_satellite_data(t,'IR_108')
#             data_cutout = cutout_box(sat_obs,case.l0_msg_eu, case.c0_msg_eu, 51)
            
#             #sat_data['CTTH_HEIGHT'].append(mst.get_nwcsaf_prod('CTTH_HEIGHT',t,calibrate=True))

#             #px_corr = go.parallax_correct_msg(sat_obs,slon,slat,sat_data['CTTH_HEIGHT'][i],'std','eu','rss',3)

#             #sat_data['IR_108'].append(sat_obs)
#             tracking_base.append(data_cutout)


        #for sd in sat_data['IR_108']:
        #    data_cutout = cutout_box(sd,case.l0_msg_eu, case.c0_msg_eu, 51)
        #    tracking_base.append(data_cutout)
        track_mae = calculate_track_mae(tracking_base,list(flow_methods.keys()))
        
        for col in track_mae.columns:
            track_maes.extend(track_mae[col].values)
            techniques.extend([col]*len(track_mae.index))
            time_idx.extend(track_mae.index.values)
            track_ids.extend([case_id]*len(track_mae.index))
#         track_maes.append(calculate_track_mae(tracking_base,list(flow_methods.keys())))
#         track_ids.append(case_id)

    except Exception as e:
        print("Fehler {} bei Fall {}.".format(e,case_id))
        continue
        
    #update_progress(j / len(haci_objects_2013.index))

  0%|          | 0/1026 [00:00<?, ?it/s]

  0%|          | 1/1026 [00:03<1:01:18,  3.59s/it]

  0%|          | 2/1026 [00:05<55:06,  3.23s/it]  

  0%|          | 3/1026 [00:07<46:45,  2.74s/it]

  0%|          | 4/1026 [00:09<40:39,  2.39s/it]

  0%|          | 5/1026 [00:12<45:52,  2.70s/it]

  1%|          | 6/1026 [00:14<41:51,  2.46s/it]

  1%|          | 7/1026 [00:16<37:14,  2.19s/it]

  1%|          | 8/1026 [00:17<33:27,  1.97s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130413_884.

  1%|          | 10/1026 [00:19<27:23,  1.62s/it]
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130415_527.nc' bei Fall 20130415_527.

  1%|          | 12/1026 [00:21<24:18,  1.44s/it]

  1%|▏         | 13/1026 [00:23<29:51,  1.77s/it]

  1%|▏         | 14/1026 [00:26<33:32,  1.99s/it]

  1%|▏         | 15/1026 [00:29<41:16,  2.45s/it]

  2%|▏         | 16/1026 [00:32<44:53,  2.67s/it]

  2%|▏         | 17/1026 [00:35<44:10,  2.63s/it]

  2%|▏         | 18/1026 [00:38<44:22,  2.64s/it]

  2%|▏         | 19/1026 [00:40<44:15,  2.64s/it]

  2%|▏         | 20/1026 [00:42<42:13,  2.52s/it]

  2%|▏         | 21/1026 [00:45<43:33,  2.60s/it]

  2%|▏         | 22/1026 [00:48<43:44,  2.61s/it]

  2%|▏         | 23/1026 [00:51<44:39,  2.67s/it]

  2%|▏         | 24/1026 [00:53<43:27,  2.60s/it]

  2%|▏         | 25/1026 [00:56<42:58,  2.58s/it]

  3%|▎         | 26/1026 [00:57<38:42,  2.32s/it]

  3%|▎         | 27/1026 [00:59<37:21,  2.24s/it]

  3%|▎         | 28/1026 [01:02<37:28,  2.25s/it]

  3%|▎         | 29/1026 [01:04<37:38,  2.27s/it]

  3%|▎         | 30/1026 [01:06<36:34,  2.20s/it]

  3%|▎         | 31/1026 [01:08<36:27,  2.20s/it]

  3%|▎         | 32/1026 [01:10<35:27,  2.14s/it]

  3%|▎         | 33/1026 [01:11<26:19,  1.59s/it]
Fehler operands could not be broadcast together with shapes (50,51) (51,51)  bei Fall 20130418_2955.

  3%|▎         | 34/1026 [01:13<29:01,  1.76s/it]

  3%|▎         | 35/1026 [01:15<29:47,  1.80s/it]

  4%|▎         | 36/1026 [01:16<28:08,  1.71s/it]

  4%|▎         | 37/1026 [01:18<27:24,  1.66s/it]

  4%|▎         | 38/1026 [01:20<29:53,  1.82s/it]

  4%|▍         | 39/1026 [01:22<33:26,  2.03s/it]

  4%|▍         | 40/1026 [01:24<33:42,  2.05s/it]

  4%|▍         | 41/1026 [01:27<34:09,  2.08s/it]

  4%|▍         | 42/1026 [01:28<33:05,  2.02s/it]

  4%|▍         | 43/1026 [01:30<32:09,  1.96s/it]

  4%|▍         | 44/1026 [01:34<41:36,  2.54s/it]

  4%|▍         | 45/1026 [01:36<39:45,  2.43s/it]

  4%|▍         | 46/1026 [01:39<38:19,  2.35s/it]

  5%|▍         | 47/1026 [01:39<28:25,  1.74s/it]
Fehler operands could not be broadcast together with shapes (46,51) (51,51)  bei Fall 20130503_1124.

  5%|▍         | 48/1026 [01:39<21:18,  1.31s/it]
Fehler operands could not be broadcast together with shapes (50,51) (51,51)  bei Fall 20130503_2015.

  5%|▍         | 49/1026 [01:39<16:04,  1.01it/s]
Fehler operands could not be broadcast together with shapes (50,51) (51,51)  bei Fall 20130503_2038.

  5%|▍         | 50/1026 [01:42<22:03,  1.36s/it]

  5%|▍         | 51/1026 [01:43<23:22,  1.44s/it]

  5%|▌         | 52/1026 [01:45<24:00,  1.48s/it]

  5%|▌         | 53/1026 [01:46<24:45,  1.53s/it]

  5%|▌         | 54/1026 [01:48<25:38,  1.58s/it]

  5%|▌         | 55/1026 [01:50<25:52,  1.60s/it]

  5%|▌         | 56/1026 [01:50<19:07,  1.18s/it]
Fehler operands could not be broadcast together with shapes (44,51) (51,51)  bei Fall 20130504_3561.

  6%|▌         | 57/1026 [01:52<22:38,  1.40s/it]

  6%|▌         | 58/1026 [01:54<25:02,  1.55s/it]

  6%|▌         | 59/1026 [01:56<25:57,  1.61s/it]

  6%|▌         | 60/1026 [01:57<26:42,  1.66s/it]

  6%|▌         | 61/1026 [01:59<27:23,  1.70s/it]

  6%|▌         | 62/1026 [02:01<28:45,  1.79s/it]

  6%|▌         | 63/1026 [02:03<30:56,  1.93s/it]

  6%|▌         | 64/1026 [02:06<31:59,  2.00s/it]

  6%|▋         | 65/1026 [02:08<31:58,  2.00s/it]

  6%|▋         | 66/1026 [02:09<31:00,  1.94s/it]

  7%|▋         | 67/1026 [02:11<31:40,  1.98s/it]

  7%|▋         | 68/1026 [02:13<29:48,  1.87s/it]

  7%|▋         | 69/1026 [02:15<30:17,  1.90s/it]

  7%|▋         | 70/1026 [02:15<22:29,  1.41s/it]
Fehler operands could not be broadcast together with shapes (51,48) (51,51)  bei Fall 20130508_1430.

  7%|▋         | 71/1026 [02:17<24:22,  1.53s/it]

  7%|▋         | 72/1026 [02:19<25:25,  1.60s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130508_2037.

  7%|▋         | 74/1026 [02:21<21:58,  1.39s/it]

  7%|▋         | 75/1026 [02:22<23:19,  1.47s/it]

  7%|▋         | 76/1026 [02:25<26:52,  1.70s/it]

  8%|▊         | 77/1026 [02:26<28:00,  1.77s/it]

  8%|▊         | 78/1026 [02:28<27:19,  1.73s/it]

  8%|▊         | 79/1026 [02:30<29:04,  1.84s/it]

  8%|▊         | 80/1026 [02:32<28:11,  1.79s/it]

  8%|▊         | 81/1026 [02:34<27:44,  1.76s/it]

  8%|▊         | 82/1026 [02:35<28:05,  1.79s/it]

  8%|▊         | 83/1026 [02:38<30:07,  1.92s/it]

  8%|▊         | 84/1026 [02:39<29:39,  1.89s/it]

  8%|▊         | 85/1026 [02:41<28:47,  1.84s/it]

  8%|▊         | 86/1026 [02:43<28:41,  1.83s/it]

  8%|▊         | 87/1026 [02:45<30:08,  1.93s/it]

  9%|▊         | 88/1026 [02:45<22:09,  1.42s/it]
Fehler operands could not be broadcast together with shapes (51,48) (51,51)  bei Fall 20130509_3055.

  9%|▊         | 89/1026 [02:47<23:13,  1.49s/it]

  9%|▉         | 90/1026 [02:49<26:34,  1.70s/it]

  9%|▉         | 91/1026 [02:51<27:59,  1.80s/it]

  9%|▉         | 92/1026 [02:53<29:22,  1.89s/it]

  9%|▉         | 93/1026 [02:54<21:38,  1.39s/it]
Fehler operands could not be broadcast together with shapes (51,50) (51,51)  bei Fall 20130509_3870.

  9%|▉         | 94/1026 [02:56<26:26,  1.70s/it]

  9%|▉         | 95/1026 [02:58<29:20,  1.89s/it]

  9%|▉         | 96/1026 [03:00<30:01,  1.94s/it]

  9%|▉         | 97/1026 [03:03<31:12,  2.02s/it]

 10%|▉         | 98/1026 [03:05<31:40,  2.05s/it]

 10%|▉         | 99/1026 [03:07<30:36,  1.98s/it]

 10%|▉         | 100/1026 [03:09<32:07,  2.08s/it]

 10%|▉         | 101/1026 [03:11<32:23,  2.10s/it]

 10%|▉         | 102/1026 [03:13<33:46,  2.19s/it]

 10%|█         | 103/1026 [03:14<24:49,  1.61s/it]
Fehler operands could not be broadcast together with shapes (46,51) (51,51)  bei Fall 20130509_4467.

 10%|█         | 104/1026 [03:16<26:51,  1.75s/it]

 10%|█         | 105/1026 [03:20<36:50,  2.40s/it]

 10%|█         | 106/1026 [03:22<34:50,  2.27s/it]

 10%|█         | 107/1026 [03:24<37:18,  2.44s/it]

 11%|█         | 108/1026 [03:27<36:28,  2.38s/it]

 11%|█         | 109/1026 [03:29<35:45,  2.34s/it]

 11%|█         | 110/1026 [03:31<35:11,  2.30s/it]

 11%|█         | 111/1026 [03:31<25:32,  1.68s/it]
Fehler operands could not be broadcast together with shapes (51,48) (51,51)  bei Fall 20130509_5559.

 11%|█         | 112/1026 [03:33<27:24,  1.80s/it]

 11%|█         | 113/1026 [03:35<27:28,  1.81s/it]

 11%|█         | 114/1026 [03:37<28:32,  1.88s/it]

 11%|█         | 115/1026 [03:39<27:44,  1.83s/it]

 11%|█▏        | 116/1026 [03:41<28:20,  1.87s/it]

 11%|█▏        | 117/1026 [03:43<27:23,  1.81s/it]

 12%|█▏        | 118/1026 [03:45<29:18,  1.94s/it]

 12%|█▏        | 119/1026 [03:47<29:53,  1.98s/it]

 12%|█▏        | 120/1026 [03:49<30:15,  2.00s/it]

 12%|█▏        | 121/1026 [03:51<30:49,  2.04s/it]

 12%|█▏        | 122/1026 [03:53<30:51,  2.05s/it]

 12%|█▏        | 123/1026 [03:55<29:46,  1.98s/it]

 12%|█▏        | 124/1026 [03:57<29:08,  1.94s/it]

 12%|█▏        | 125/1026 [03:59<29:05,  1.94s/it]

 12%|█▏        | 126/1026 [04:01<28:15,  1.88s/it]

 12%|█▏        | 127/1026 [04:03<29:21,  1.96s/it]

 12%|█▏        | 128/1026 [04:05<29:37,  1.98s/it]

 13%|█▎        | 129/1026 [04:07<29:31,  1.98s/it]

 13%|█▎        | 130/1026 [04:09<28:46,  1.93s/it]

 13%|█▎        | 131/1026 [04:10<28:04,  1.88s/it]

 13%|█▎        | 132/1026 [04:12<29:06,  1.95s/it]

 13%|█▎        | 133/1026 [04:14<27:48,  1.87s/it]

 13%|█▎        | 134/1026 [04:16<26:54,  1.81s/it]

 13%|█▎        | 135/1026 [04:18<28:21,  1.91s/it]

 13%|█▎        | 136/1026 [04:20<29:46,  2.01s/it]

 13%|█▎        | 137/1026 [04:22<30:09,  2.04s/it]

 13%|█▎        | 138/1026 [04:25<35:11,  2.38s/it]

 14%|█▎        | 139/1026 [04:28<36:34,  2.47s/it]

 14%|█▎        | 140/1026 [04:31<37:05,  2.51s/it]

 14%|█▎        | 141/1026 [04:33<36:23,  2.47s/it]

 14%|█▍        | 142/1026 [04:35<34:12,  2.32s/it]

 14%|█▍        | 143/1026 [04:37<33:42,  2.29s/it]

 14%|█▍        | 144/1026 [04:39<32:40,  2.22s/it]

 14%|█▍        | 145/1026 [04:41<31:30,  2.15s/it]

 14%|█▍        | 146/1026 [04:43<30:16,  2.06s/it]

 14%|█▍        | 147/1026 [04:45<30:20,  2.07s/it]

 14%|█▍        | 148/1026 [04:47<30:14,  2.07s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130517_3929.

 15%|█▍        | 150/1026 [04:49<25:26,  1.74s/it]

 15%|█▍        | 151/1026 [04:51<26:51,  1.84s/it]

 15%|█▍        | 152/1026 [04:54<28:20,  1.95s/it]

 15%|█▍        | 153/1026 [04:56<28:41,  1.97s/it]

 15%|█▌        | 154/1026 [04:58<29:45,  2.05s/it]

 15%|█▌        | 155/1026 [05:00<29:42,  2.05s/it]

 15%|█▌        | 156/1026 [05:02<30:39,  2.11s/it]

 15%|█▌        | 157/1026 [05:04<30:45,  2.12s/it]

 15%|█▌        | 158/1026 [05:05<22:30,  1.56s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130520_1630.

 15%|█▌        | 159/1026 [05:05<16:43,  1.16s/it]
Fehler operands could not be broadcast together with shapes (48,51) (51,51)  bei Fall 20130520_2244.

 16%|█▌        | 160/1026 [05:05<12:35,  1.15it/s]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130520_2680.

 16%|█▌        | 161/1026 [05:08<23:17,  1.62s/it]

 16%|█▌        | 162/1026 [05:10<23:11,  1.61s/it]

 16%|█▌        | 163/1026 [05:12<23:52,  1.66s/it]

 16%|█▌        | 164/1026 [05:14<25:49,  1.80s/it]

 16%|█▌        | 165/1026 [05:16<25:39,  1.79s/it]

 16%|█▌        | 166/1026 [05:17<24:46,  1.73s/it]

 16%|█▋        | 167/1026 [05:19<24:57,  1.74s/it]

 16%|█▋        | 168/1026 [05:21<24:22,  1.70s/it]

 16%|█▋        | 169/1026 [05:22<25:06,  1.76s/it]

 17%|█▋        | 170/1026 [05:24<26:23,  1.85s/it]

 17%|█▋        | 171/1026 [05:27<27:30,  1.93s/it]

 17%|█▋        | 172/1026 [05:29<27:28,  1.93s/it]

 17%|█▋        | 173/1026 [05:31<29:07,  2.05s/it]

 17%|█▋        | 174/1026 [05:33<29:24,  2.07s/it]

 17%|█▋        | 175/1026 [05:35<28:52,  2.04s/it]

 17%|█▋        | 176/1026 [05:36<26:41,  1.88s/it]

 17%|█▋        | 177/1026 [05:37<19:36,  1.39s/it]
Fehler operands could not be broadcast together with shapes (49,51) (51,51)  bei Fall 20130528_4263.

 17%|█▋        | 178/1026 [05:37<14:35,  1.03s/it]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130528_4291.

 17%|█▋        | 179/1026 [05:39<17:08,  1.21s/it]

 18%|█▊        | 180/1026 [05:41<20:57,  1.49s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130529_4192.

 18%|█▊        | 182/1026 [05:43<19:03,  1.35s/it]

 18%|█▊        | 183/1026 [05:45<22:15,  1.58s/it]

 18%|█▊        | 184/1026 [05:47<23:55,  1.71s/it]

 18%|█▊        | 185/1026 [05:49<24:59,  1.78s/it]

 18%|█▊        | 186/1026 [05:50<24:21,  1.74s/it]

 18%|█▊        | 187/1026 [05:52<23:43,  1.70s/it]

 18%|█▊        | 188/1026 [05:54<23:47,  1.70s/it]

 19%|█▊        | 190/1026 [05:54<16:50,  1.21s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130530_400.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130530_602.

 19%|█▊        | 191/1026 [05:56<19:17,  1.39s/it]

 19%|█▊        | 192/1026 [05:57<21:01,  1.51s/it]

 19%|█▉        | 193/1026 [06:00<24:05,  1.74s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130601_2286.

 19%|█▉        | 195/1026 [06:02<21:27,  1.55s/it]

 19%|█▉        | 196/1026 [06:04<22:26,  1.62s/it]

 19%|█▉        | 197/1026 [06:06<23:16,  1.68s/it]

 19%|█▉        | 198/1026 [06:06<16:45,  1.21s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130601_5549.

 19%|█▉        | 199/1026 [06:08<20:19,  1.47s/it]

 19%|█▉        | 200/1026 [06:10<22:05,  1.61s/it]

 20%|█▉        | 201/1026 [06:11<22:33,  1.64s/it]

 20%|█▉        | 202/1026 [06:13<23:49,  1.74s/it]

 20%|█▉        | 204/1026 [06:14<16:55,  1.24s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130601_8188.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130601_8585.

 20%|█▉        | 205/1026 [06:15<19:12,  1.40s/it]

 20%|██        | 206/1026 [06:17<22:19,  1.63s/it]

 20%|██        | 207/1026 [06:20<24:12,  1.77s/it]

 20%|██        | 208/1026 [06:21<24:28,  1.80s/it]

 20%|██        | 209/1026 [06:22<18:14,  1.34s/it]
Fehler operands could not be broadcast together with shapes (51,48) (51,51)  bei Fall 20130601_13562.

 20%|██        | 210/1026 [06:24<23:36,  1.74s/it]

 21%|██        | 211/1026 [06:25<17:53,  1.32s/it]
Fehler operands could not be broadcast together with shapes (51,49) (51,51)  bei Fall 20130602_1930.

 21%|██        | 212/1026 [06:27<20:47,  1.53s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130602_7550.

 21%|██        | 214/1026 [06:29<18:14,  1.35s/it]

 21%|██        | 215/1026 [06:31<21:44,  1.61s/it]

 21%|██        | 216/1026 [06:31<16:20,  1.21s/it]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130606_2294.

 21%|██        | 217/1026 [06:33<18:43,  1.39s/it]

 21%|██        | 218/1026 [06:35<20:43,  1.54s/it]

 21%|██▏       | 219/1026 [06:37<22:16,  1.66s/it]

 21%|██▏       | 220/1026 [06:38<22:00,  1.64s/it]

 22%|██▏       | 221/1026 [06:40<23:04,  1.72s/it]

 22%|██▏       | 222/1026 [06:40<17:16,  1.29s/it]
Fehler operands could not be broadcast together with shapes (51,49) (51,51)  bei Fall 20130608_2641.

 22%|██▏       | 223/1026 [06:42<18:48,  1.41s/it]

 22%|██▏       | 224/1026 [06:44<21:08,  1.58s/it]

 22%|██▏       | 225/1026 [06:46<21:16,  1.59s/it]

 22%|██▏       | 226/1026 [06:47<21:26,  1.61s/it]

 22%|██▏       | 227/1026 [06:51<28:17,  2.12s/it]

 22%|██▏       | 228/1026 [06:52<26:32,  2.00s/it]

 22%|██▏       | 229/1026 [06:54<25:23,  1.91s/it]

 22%|██▏       | 230/1026 [06:56<24:45,  1.87s/it]

 23%|██▎       | 231/1026 [06:58<24:16,  1.83s/it]

 23%|██▎       | 232/1026 [06:59<23:50,  1.80s/it]

 23%|██▎       | 233/1026 [07:01<23:19,  1.77s/it]

 23%|██▎       | 234/1026 [07:03<23:37,  1.79s/it]

 23%|██▎       | 235/1026 [07:05<25:05,  1.90s/it]

 23%|██▎       | 236/1026 [07:07<26:00,  1.98s/it]

 23%|██▎       | 237/1026 [07:09<26:14,  2.00s/it]

 23%|██▎       | 238/1026 [07:11<25:48,  1.96s/it]

 23%|██▎       | 239/1026 [07:13<26:22,  2.01s/it]

 23%|██▎       | 240/1026 [07:15<25:03,  1.91s/it]

 23%|██▎       | 241/1026 [07:17<24:51,  1.90s/it]

 24%|██▎       | 242/1026 [07:19<26:30,  2.03s/it]

 24%|██▎       | 243/1026 [07:21<26:02,  2.00s/it]

 24%|██▍       | 244/1026 [07:23<25:32,  1.96s/it]

 24%|██▍       | 245/1026 [07:25<24:30,  1.88s/it]

 24%|██▍       | 246/1026 [07:27<24:18,  1.87s/it]

 24%|██▍       | 247/1026 [07:28<23:10,  1.78s/it]

 24%|██▍       | 248/1026 [07:29<21:34,  1.66s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130610_6326.

 24%|██▍       | 250/1026 [07:31<18:30,  1.43s/it]

 24%|██▍       | 251/1026 [07:33<21:17,  1.65s/it]

 25%|██▍       | 252/1026 [07:35<22:34,  1.75s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130611_2550.

 25%|██▍       | 254/1026 [07:38<20:05,  1.56s/it]

 25%|██▍       | 255/1026 [07:40<22:23,  1.74s/it]

 25%|██▍       | 256/1026 [07:42<23:19,  1.82s/it]

 25%|██▌       | 258/1026 [07:42<16:33,  1.29s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130611_3039.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130611_3211.

 25%|██▌       | 259/1026 [07:44<17:56,  1.40s/it]

 25%|██▌       | 260/1026 [07:46<21:02,  1.65s/it]

 25%|██▌       | 261/1026 [07:48<21:24,  1.68s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130613_2811.

 26%|██▌       | 263/1026 [07:50<19:10,  1.51s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130613_3896.

 26%|██▌       | 265/1026 [07:52<17:26,  1.37s/it]

 26%|██▌       | 266/1026 [07:54<19:26,  1.53s/it]

 26%|██▌       | 267/1026 [07:56<22:58,  1.82s/it]

 26%|██▌       | 268/1026 [07:59<25:08,  1.99s/it]

 26%|██▌       | 269/1026 [08:01<25:41,  2.04s/it]

 26%|██▋       | 270/1026 [08:03<26:26,  2.10s/it]

 26%|██▋       | 271/1026 [08:06<27:45,  2.21s/it]

 27%|██▋       | 272/1026 [08:06<20:37,  1.64s/it]
Fehler operands could not be broadcast together with shapes (44,51) (51,51)  bei Fall 20130615_4073.

 27%|██▋       | 273/1026 [08:08<22:11,  1.77s/it]

 27%|██▋       | 274/1026 [08:10<23:12,  1.85s/it]

 27%|██▋       | 275/1026 [08:12<24:14,  1.94s/it]

 27%|██▋       | 276/1026 [08:14<24:54,  1.99s/it]

 27%|██▋       | 277/1026 [08:16<24:18,  1.95s/it]

 27%|██▋       | 278/1026 [08:18<25:26,  2.04s/it]

 27%|██▋       | 279/1026 [08:20<25:36,  2.06s/it]

 27%|██▋       | 280/1026 [08:22<24:23,  1.96s/it]

 27%|██▋       | 281/1026 [08:24<25:15,  2.03s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130618_2336.

 28%|██▊       | 283/1026 [08:26<20:37,  1.66s/it]

 28%|██▊       | 284/1026 [08:27<20:00,  1.62s/it]

 28%|██▊       | 285/1026 [08:28<14:49,  1.20s/it]
Fehler operands could not be broadcast together with shapes (48,51) (51,51)  bei Fall 20130618_2770.

 28%|██▊       | 286/1026 [08:29<16:36,  1.35s/it]

 28%|██▊       | 287/1026 [08:30<12:30,  1.02s/it]
Fehler operands could not be broadcast together with shapes (48,51) (51,51)  bei Fall 20130618_2992.

 28%|██▊       | 288/1026 [08:33<20:56,  1.70s/it]

 28%|██▊       | 289/1026 [08:35<21:06,  1.72s/it]

 28%|██▊       | 290/1026 [08:36<21:20,  1.74s/it]

 28%|██▊       | 291/1026 [08:38<20:40,  1.69s/it]

 28%|██▊       | 292/1026 [08:40<20:43,  1.69s/it]

 29%|██▊       | 293/1026 [08:42<20:58,  1.72s/it]

 29%|██▊       | 294/1026 [08:43<21:21,  1.75s/it]

 29%|██▉       | 295/1026 [08:46<23:52,  1.96s/it]

 29%|██▉       | 296/1026 [08:48<24:23,  2.01s/it]

 29%|██▉       | 297/1026 [08:50<24:08,  1.99s/it]

 29%|██▉       | 298/1026 [08:52<23:48,  1.96s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130619_2641.

 29%|██▉       | 300/1026 [08:54<20:10,  1.67s/it]

 29%|██▉       | 301/1026 [08:55<20:21,  1.68s/it]

 29%|██▉       | 302/1026 [08:57<20:28,  1.70s/it]

 30%|██▉       | 303/1026 [08:59<21:12,  1.76s/it]

 30%|██▉       | 304/1026 [09:01<22:45,  1.89s/it]

 30%|██▉       | 305/1026 [09:01<16:18,  1.36s/it]

 30%|██▉       | 307/1026 [09:02<11:36,  1.03it/s]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130619_4133.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130619_4230.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130619_4242.

 30%|███       | 308/1026 [09:03<13:33,  1.13s/it]

 30%|███       | 309/1026 [09:06<18:36,  1.56s/it]

 30%|███       | 310/1026 [09:07<18:45,  1.57s/it]

 30%|███       | 311/1026 [09:09<18:38,  1.56s/it]

 30%|███       | 312/1026 [09:10<18:46,  1.58s/it]

 31%|███       | 313/1026 [09:13<23:49,  2.00s/it]

 31%|███       | 314/1026 [09:15<23:54,  2.02s/it]

 31%|███       | 315/1026 [09:18<27:30,  2.32s/it]

 31%|███       | 316/1026 [09:20<24:29,  2.07s/it]

 31%|███       | 317/1026 [09:22<22:56,  1.94s/it]

 31%|███       | 318/1026 [09:24<23:43,  2.01s/it]

 31%|███       | 319/1026 [09:26<23:04,  1.96s/it]

 31%|███       | 320/1026 [09:28<23:31,  2.00s/it]

 31%|███▏      | 321/1026 [09:30<24:23,  2.08s/it]

 31%|███▏      | 322/1026 [09:32<23:05,  1.97s/it]

 31%|███▏      | 323/1026 [09:34<23:56,  2.04s/it]

 32%|███▏      | 324/1026 [09:36<23:23,  2.00s/it]

 32%|███▏      | 325/1026 [09:38<23:12,  1.99s/it]

 32%|███▏      | 326/1026 [09:41<26:01,  2.23s/it]

 32%|███▏      | 327/1026 [09:43<25:34,  2.19s/it]

 32%|███▏      | 328/1026 [09:45<25:06,  2.16s/it]

 32%|███▏      | 329/1026 [09:47<24:23,  2.10s/it]

 32%|███▏      | 330/1026 [09:49<24:25,  2.11s/it]

 32%|███▏      | 331/1026 [09:51<25:45,  2.22s/it]

 32%|███▏      | 332/1026 [09:53<25:28,  2.20s/it]

 32%|███▏      | 333/1026 [09:56<25:24,  2.20s/it]

 33%|███▎      | 334/1026 [09:57<24:06,  2.09s/it]

 33%|███▎      | 335/1026 [09:59<22:39,  1.97s/it]

 33%|███▎      | 336/1026 [10:01<22:42,  1.97s/it]

 33%|███▎      | 337/1026 [10:03<23:00,  2.00s/it]

 33%|███▎      | 338/1026 [10:06<25:43,  2.24s/it]

 33%|███▎      | 339/1026 [10:08<25:48,  2.25s/it]

 33%|███▎      | 340/1026 [10:10<25:16,  2.21s/it]

 33%|███▎      | 341/1026 [10:13<25:11,  2.21s/it]

 33%|███▎      | 342/1026 [10:15<24:15,  2.13s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130623_5343.

 34%|███▎      | 344/1026 [10:17<20:26,  1.80s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130623_6485.

 34%|███▎      | 346/1026 [10:19<17:43,  1.56s/it]

 34%|███▍      | 347/1026 [10:22<25:22,  2.24s/it]

 34%|███▍      | 348/1026 [10:26<31:21,  2.78s/it]

 34%|███▍      | 349/1026 [10:29<29:59,  2.66s/it]

 34%|███▍      | 350/1026 [10:31<27:38,  2.45s/it]

 34%|███▍      | 351/1026 [10:33<25:45,  2.29s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130624_3646.

 34%|███▍      | 353/1026 [10:35<22:15,  1.98s/it]

 35%|███▍      | 354/1026 [10:37<22:15,  1.99s/it]

 35%|███▍      | 355/1026 [10:40<23:17,  2.08s/it]

 35%|███▍      | 356/1026 [10:42<23:45,  2.13s/it]

 35%|███▍      | 357/1026 [10:44<22:19,  2.00s/it]

 35%|███▍      | 358/1026 [10:45<22:01,  1.98s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130625_6993.

 35%|███▌      | 360/1026 [10:47<18:27,  1.66s/it]

 35%|███▌      | 361/1026 [10:49<18:47,  1.70s/it]

 35%|███▌      | 362/1026 [10:51<19:14,  1.74s/it]

 35%|███▌      | 363/1026 [10:53<20:10,  1.83s/it]

 35%|███▌      | 364/1026 [10:55<19:52,  1.80s/it]

 36%|███▌      | 365/1026 [10:57<20:40,  1.88s/it]

 36%|███▌      | 366/1026 [10:59<21:03,  1.91s/it]

 36%|███▌      | 367/1026 [11:01<21:54,  1.99s/it]

 36%|███▌      | 368/1026 [11:02<20:22,  1.86s/it]

 36%|███▌      | 369/1026 [11:04<20:14,  1.85s/it]

 36%|███▌      | 370/1026 [11:06<19:56,  1.82s/it]

 36%|███▌      | 371/1026 [11:08<18:53,  1.73s/it]

 36%|███▋      | 372/1026 [11:09<19:10,  1.76s/it]

 36%|███▋      | 373/1026 [11:11<20:02,  1.84s/it]

 36%|███▋      | 374/1026 [11:14<20:50,  1.92s/it]

 37%|███▋      | 375/1026 [11:16<21:00,  1.94s/it]

 37%|███▋      | 376/1026 [11:17<20:49,  1.92s/it]

 37%|███▋      | 377/1026 [11:19<20:39,  1.91s/it]

 37%|███▋      | 378/1026 [11:21<20:58,  1.94s/it]

 37%|███▋      | 379/1026 [11:23<20:50,  1.93s/it]

 37%|███▋      | 380/1026 [11:25<21:08,  1.96s/it]

 37%|███▋      | 381/1026 [11:27<21:37,  2.01s/it]

 37%|███▋      | 382/1026 [11:29<21:49,  2.03s/it]

 37%|███▋      | 383/1026 [11:32<22:16,  2.08s/it]

 37%|███▋      | 384/1026 [11:34<21:59,  2.06s/it]

 38%|███▊      | 385/1026 [11:36<21:57,  2.06s/it]

 38%|███▊      | 386/1026 [11:38<22:35,  2.12s/it]

 38%|███▊      | 387/1026 [11:40<21:40,  2.03s/it]

 38%|███▊      | 388/1026 [11:42<21:29,  2.02s/it]

 38%|███▊      | 389/1026 [11:45<24:03,  2.27s/it]

 38%|███▊      | 390/1026 [11:47<24:15,  2.29s/it]

 38%|███▊      | 391/1026 [11:49<24:21,  2.30s/it]

 38%|███▊      | 392/1026 [11:51<23:18,  2.21s/it]

 38%|███▊      | 393/1026 [11:53<22:30,  2.13s/it]

 38%|███▊      | 394/1026 [11:55<21:39,  2.06s/it]

 38%|███▊      | 395/1026 [11:57<21:29,  2.04s/it]

 39%|███▊      | 396/1026 [11:59<21:08,  2.01s/it]

 39%|███▊      | 397/1026 [12:01<21:24,  2.04s/it]

 39%|███▉      | 398/1026 [12:03<21:30,  2.05s/it]

 39%|███▉      | 399/1026 [12:05<21:25,  2.05s/it]

 39%|███▉      | 400/1026 [12:09<27:15,  2.61s/it]

 39%|███▉      | 401/1026 [12:11<24:02,  2.31s/it]

 39%|███▉      | 402/1026 [12:13<22:33,  2.17s/it]

 39%|███▉      | 403/1026 [12:15<21:54,  2.11s/it]

 39%|███▉      | 404/1026 [12:17<21:11,  2.04s/it]

 39%|███▉      | 405/1026 [12:19<21:04,  2.04s/it]

 40%|███▉      | 406/1026 [12:20<20:05,  1.94s/it]

 40%|███▉      | 407/1026 [12:22<20:01,  1.94s/it]

 40%|███▉      | 408/1026 [12:25<21:37,  2.10s/it]

 40%|███▉      | 409/1026 [12:26<20:22,  1.98s/it]

 40%|███▉      | 410/1026 [12:29<21:35,  2.10s/it]

 40%|████      | 411/1026 [12:31<21:14,  2.07s/it]

 40%|████      | 412/1026 [12:33<20:14,  1.98s/it]

 40%|████      | 413/1026 [12:34<19:35,  1.92s/it]

 40%|████      | 414/1026 [12:36<20:02,  1.96s/it]

 40%|████      | 415/1026 [12:38<20:04,  1.97s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130703_8331.

 41%|████      | 417/1026 [12:39<14:39,  1.44s/it]
Fehler operands could not be broadcast together with shapes (51,49) (51,51)  bei Fall 20130703_8738.

 41%|████      | 418/1026 [12:40<15:21,  1.52s/it]

 41%|████      | 419/1026 [12:43<17:39,  1.75s/it]

 41%|████      | 420/1026 [12:45<18:22,  1.82s/it]

 41%|████      | 421/1026 [12:47<19:22,  1.92s/it]

 41%|████      | 422/1026 [12:50<21:30,  2.14s/it]

 41%|████      | 423/1026 [12:52<21:09,  2.11s/it]

 41%|████▏     | 424/1026 [12:53<19:24,  1.93s/it]

 41%|████▏     | 425/1026 [12:55<18:59,  1.90s/it]

 42%|████▏     | 426/1026 [12:57<18:57,  1.90s/it]

 42%|████▏     | 427/1026 [12:58<18:08,  1.82s/it]

 42%|████▏     | 428/1026 [13:00<17:18,  1.74s/it]

 42%|████▏     | 429/1026 [13:02<16:46,  1.69s/it]

 42%|████▏     | 430/1026 [13:02<12:27,  1.26s/it]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130709_429.

 42%|████▏     | 431/1026 [13:04<13:55,  1.40s/it]

 42%|████▏     | 432/1026 [13:04<10:23,  1.05s/it]
Fehler operands could not be broadcast together with shapes (50,51) (51,51)  bei Fall 20130711_32.

 42%|████▏     | 433/1026 [13:04<08:01,  1.23it/s]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130718_263.

 42%|████▏     | 434/1026 [13:04<06:17,  1.57it/s]
Fehler operands could not be broadcast together with shapes (49,51) (51,51)  bei Fall 20130718_371.

 42%|████▏     | 435/1026 [13:05<05:10,  1.90it/s]
Fehler operands could not be broadcast together with shapes (46,51) (51,51)  bei Fall 20130719_398.

 42%|████▏     | 436/1026 [13:06<08:38,  1.14it/s]

 43%|████▎     | 437/1026 [13:06<06:45,  1.45it/s]
Fehler operands could not be broadcast together with shapes (48,51) (51,51)  bei Fall 20130719_586.

 43%|████▎     | 438/1026 [13:08<10:03,  1.03s/it]

 43%|████▎     | 439/1026 [13:10<11:40,  1.19s/it]

 43%|████▎     | 440/1026 [13:11<12:49,  1.31s/it]

 43%|████▎     | 441/1026 [13:13<12:44,  1.31s/it]

 43%|████▎     | 442/1026 [13:14<13:16,  1.36s/it]

 43%|████▎     | 443/1026 [13:16<14:08,  1.46s/it]

 43%|████▎     | 444/1026 [13:18<15:18,  1.58s/it]

 43%|████▎     | 445/1026 [13:20<15:45,  1.63s/it]

 43%|████▎     | 446/1026 [13:22<17:10,  1.78s/it]

 44%|████▎     | 447/1026 [13:23<17:14,  1.79s/it]

 44%|████▎     | 448/1026 [13:25<16:38,  1.73s/it]

 44%|████▍     | 449/1026 [13:27<16:24,  1.71s/it]

 44%|████▍     | 450/1026 [13:28<16:13,  1.69s/it]

 44%|████▍     | 451/1026 [13:30<17:04,  1.78s/it]

 44%|████▍     | 452/1026 [13:32<16:22,  1.71s/it]

 44%|████▍     | 453/1026 [13:34<16:06,  1.69s/it]

 44%|████▍     | 454/1026 [13:35<16:37,  1.74s/it]

 44%|████▍     | 455/1026 [13:36<12:11,  1.28s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130723_897.

 44%|████▍     | 456/1026 [13:38<14:09,  1.49s/it]

 45%|████▍     | 457/1026 [13:40<15:31,  1.64s/it]
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1016.nc' bei Fall 20130723_1016.
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1017.nc' bei Fall 20130723_1017.
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1065.nc' bei Fall 20130723_1065.
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1083.nc' bei Fall 20130723_1083.
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1104.nc' bei Fall 20130723_1104.
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1109.nc' bei Fall 20130723_1109.

 45%|████▌     | 464/1026 [13:42<11:31,  1.23s/it]

 45%|████▌     | 465/1026 [13:43<13:16,  1.42s/it]

 45%|████▌     | 466/1026 [13:45<13:56,  1.49s/it]
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1341.nc' bei Fall 20130723_1341.
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1358.nc' bei Fall 20130723_1358.
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130723_1385.nc' bei Fall 20130723_1385.

 46%|████▌     | 470/1026 [13:48<12:03,  1.30s/it]

 46%|████▌     | 471/1026 [13:50<13:50,  1.50s/it]

 46%|████▌     | 472/1026 [13:53<15:33,  1.69s/it]

 46%|████▌     | 473/1026 [13:55<16:46,  1.82s/it]

 46%|████▌     | 474/1026 [13:57<17:23,  1.89s/it]

 46%|████▋     | 475/1026 [13:59<17:08,  1.87s/it]

 46%|████▋     | 476/1026 [14:00<16:45,  1.83s/it]

 46%|████▋     | 477/1026 [14:02<16:54,  1.85s/it]

 47%|████▋     | 478/1026 [14:04<17:33,  1.92s/it]

 47%|████▋     | 479/1026 [14:07<18:31,  2.03s/it]

 47%|████▋     | 480/1026 [14:08<18:04,  1.99s/it]

 47%|████▋     | 481/1026 [14:10<17:53,  1.97s/it]

 47%|████▋     | 482/1026 [14:13<20:33,  2.27s/it]

 47%|████▋     | 483/1026 [14:15<19:31,  2.16s/it]

 47%|████▋     | 484/1026 [14:17<18:24,  2.04s/it]

 47%|████▋     | 485/1026 [14:17<13:28,  1.49s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130724_1800.

 47%|████▋     | 486/1026 [14:19<14:03,  1.56s/it]

 47%|████▋     | 487/1026 [14:21<15:03,  1.68s/it]

 48%|████▊     | 488/1026 [14:23<16:16,  1.81s/it]

 48%|████▊     | 489/1026 [14:25<17:28,  1.95s/it]

 48%|████▊     | 490/1026 [14:28<18:35,  2.08s/it]

 48%|████▊     | 491/1026 [14:29<17:45,  1.99s/it]

 48%|████▊     | 492/1026 [14:31<17:02,  1.92s/it]

 48%|████▊     | 493/1026 [14:33<17:23,  1.96s/it]

 48%|████▊     | 494/1026 [14:35<16:33,  1.87s/it]

 48%|████▊     | 495/1026 [14:37<16:20,  1.85s/it]

 48%|████▊     | 496/1026 [14:39<16:13,  1.84s/it]

 48%|████▊     | 497/1026 [14:40<16:22,  1.86s/it]

 49%|████▊     | 498/1026 [14:42<16:30,  1.88s/it]

 49%|████▊     | 499/1026 [14:44<16:38,  1.89s/it]

 49%|████▊     | 500/1026 [14:46<16:03,  1.83s/it]

 49%|████▉     | 501/1026 [14:48<16:49,  1.92s/it]

 49%|████▉     | 502/1026 [14:50<16:47,  1.92s/it]

 49%|████▉     | 503/1026 [14:52<17:37,  2.02s/it]

 49%|████▉     | 504/1026 [14:54<17:15,  1.98s/it]

 49%|████▉     | 505/1026 [14:56<17:00,  1.96s/it]

 49%|████▉     | 506/1026 [14:58<16:50,  1.94s/it]

 49%|████▉     | 507/1026 [15:00<18:03,  2.09s/it]

 50%|████▉     | 508/1026 [15:02<17:19,  2.01s/it]

 50%|████▉     | 509/1026 [15:04<16:09,  1.88s/it]

 50%|████▉     | 510/1026 [15:06<15:54,  1.85s/it]

 50%|████▉     | 511/1026 [15:07<15:19,  1.79s/it]

 50%|████▉     | 512/1026 [15:09<14:53,  1.74s/it]

 50%|█████     | 513/1026 [15:11<14:40,  1.72s/it]

 50%|█████     | 514/1026 [15:12<15:03,  1.76s/it]

 50%|█████     | 515/1026 [15:14<15:13,  1.79s/it]

 50%|█████     | 516/1026 [15:16<16:00,  1.88s/it]

 50%|█████     | 517/1026 [15:18<15:56,  1.88s/it]

 50%|█████     | 518/1026 [15:20<16:47,  1.98s/it]

 51%|█████     | 519/1026 [15:22<15:52,  1.88s/it]

 51%|█████     | 520/1026 [15:24<17:07,  2.03s/it]

 51%|█████     | 521/1026 [15:27<17:05,  2.03s/it]

 51%|█████     | 522/1026 [15:27<12:37,  1.50s/it]
Fehler operands could not be broadcast together with shapes (46,51) (51,51)  bei Fall 20130725_1313.

 51%|█████     | 523/1026 [15:30<16:14,  1.94s/it]

 51%|█████     | 524/1026 [15:34<23:08,  2.77s/it]

 51%|█████     | 525/1026 [15:37<22:31,  2.70s/it]

 51%|█████▏    | 526/1026 [15:39<20:51,  2.50s/it]

 51%|█████▏    | 527/1026 [15:41<20:07,  2.42s/it]

 51%|█████▏    | 528/1026 [15:41<14:40,  1.77s/it]
Fehler operands could not be broadcast together with shapes (49,51) (51,51)  bei Fall 20130725_1433.

 52%|█████▏    | 529/1026 [15:44<17:03,  2.06s/it]

 52%|█████▏    | 530/1026 [15:47<18:38,  2.25s/it]

 52%|█████▏    | 531/1026 [15:49<18:32,  2.25s/it]

 52%|█████▏    | 532/1026 [15:52<19:08,  2.33s/it]

 52%|█████▏    | 533/1026 [15:54<19:48,  2.41s/it]

 52%|█████▏    | 534/1026 [15:57<19:20,  2.36s/it]

 52%|█████▏    | 535/1026 [15:59<18:57,  2.32s/it]

 52%|█████▏    | 536/1026 [16:01<18:27,  2.26s/it]

 52%|█████▏    | 537/1026 [16:03<17:51,  2.19s/it]

 52%|█████▏    | 538/1026 [16:05<17:14,  2.12s/it]

 53%|█████▎    | 539/1026 [16:07<17:28,  2.15s/it]

 53%|█████▎    | 540/1026 [16:07<12:41,  1.57s/it]
Fehler operands could not be broadcast together with shapes (44,51) (51,51)  bei Fall 20130725_1804.

 53%|█████▎    | 541/1026 [16:09<12:59,  1.61s/it]

 53%|█████▎    | 542/1026 [16:11<14:02,  1.74s/it]

 53%|█████▎    | 543/1026 [16:13<15:20,  1.91s/it]

 53%|█████▎    | 544/1026 [16:16<15:58,  1.99s/it]

 53%|█████▎    | 545/1026 [16:18<16:37,  2.07s/it]

 53%|█████▎    | 546/1026 [16:20<15:44,  1.97s/it]

 53%|█████▎    | 547/1026 [16:21<15:26,  1.93s/it]

 53%|█████▎    | 548/1026 [16:23<15:08,  1.90s/it]

 54%|█████▎    | 549/1026 [16:25<15:04,  1.90s/it]

 54%|█████▎    | 550/1026 [16:27<15:50,  2.00s/it]

 54%|█████▎    | 551/1026 [16:29<16:04,  2.03s/it]

 54%|█████▍    | 552/1026 [16:32<16:36,  2.10s/it]

 54%|█████▍    | 553/1026 [16:34<16:24,  2.08s/it]

 54%|█████▍    | 554/1026 [16:35<15:29,  1.97s/it]

 54%|█████▍    | 555/1026 [16:37<14:18,  1.82s/it]

 54%|█████▍    | 556/1026 [16:39<14:00,  1.79s/it]

 54%|█████▍    | 557/1026 [16:39<10:22,  1.33s/it]
Fehler operands could not be broadcast together with shapes (46,51) (51,51)  bei Fall 20130727_1198.

 54%|█████▍    | 558/1026 [16:41<11:45,  1.51s/it]

 54%|█████▍    | 559/1026 [16:42<12:09,  1.56s/it]

 55%|█████▍    | 560/1026 [16:44<12:23,  1.59s/it]

 55%|█████▍    | 561/1026 [16:46<12:48,  1.65s/it]

 55%|█████▍    | 562/1026 [16:48<12:57,  1.68s/it]

 55%|█████▍    | 563/1026 [16:50<13:20,  1.73s/it]

 55%|█████▍    | 564/1026 [16:51<13:32,  1.76s/it]

 55%|█████▌    | 565/1026 [16:53<13:46,  1.79s/it]

 55%|█████▌    | 566/1026 [16:55<14:04,  1.84s/it]

 55%|█████▌    | 567/1026 [16:57<14:48,  1.94s/it]

 55%|█████▌    | 568/1026 [16:58<11:00,  1.44s/it]
Fehler operands could not be broadcast together with shapes (49,51) (51,51)  bei Fall 20130728_952.

 55%|█████▌    | 569/1026 [17:00<12:19,  1.62s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130728_1737.

 56%|█████▌    | 571/1026 [17:02<11:02,  1.46s/it]

 56%|█████▌    | 572/1026 [17:04<12:14,  1.62s/it]

 56%|█████▌    | 573/1026 [17:06<13:30,  1.79s/it]

 56%|█████▌    | 574/1026 [17:08<14:00,  1.86s/it]

 56%|█████▌    | 575/1026 [17:10<14:05,  1.88s/it]

 56%|█████▌    | 576/1026 [17:12<14:20,  1.91s/it]

 56%|█████▌    | 577/1026 [17:14<13:54,  1.86s/it]

 56%|█████▋    | 578/1026 [17:16<14:36,  1.96s/it]

 56%|█████▋    | 579/1026 [17:18<14:30,  1.95s/it]

 57%|█████▋    | 580/1026 [17:21<17:29,  2.35s/it]

 57%|█████▋    | 581/1026 [17:23<16:48,  2.27s/it]

 57%|█████▋    | 582/1026 [17:25<15:37,  2.11s/it]

 57%|█████▋    | 583/1026 [17:27<15:09,  2.05s/it]

 57%|█████▋    | 584/1026 [17:29<15:19,  2.08s/it]

 57%|█████▋    | 585/1026 [17:31<15:52,  2.16s/it]

 57%|█████▋    | 586/1026 [17:33<15:34,  2.12s/it]

 57%|█████▋    | 587/1026 [17:36<15:51,  2.17s/it]

 57%|█████▋    | 588/1026 [17:38<15:28,  2.12s/it]
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20130729_3194.nc' bei Fall 20130729_3194.

 58%|█████▊    | 590/1026 [17:40<13:17,  1.83s/it]

 58%|█████▊    | 591/1026 [17:42<13:32,  1.87s/it]

 58%|█████▊    | 592/1026 [17:44<13:52,  1.92s/it]

 58%|█████▊    | 593/1026 [17:46<15:08,  2.10s/it]

 58%|█████▊    | 594/1026 [17:47<10:48,  1.50s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130729_4833.

 58%|█████▊    | 595/1026 [17:49<13:12,  1.84s/it]

 58%|█████▊    | 596/1026 [17:51<13:45,  1.92s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130729_5219.

 58%|█████▊    | 598/1026 [17:53<11:55,  1.67s/it]

 58%|█████▊    | 599/1026 [17:55<12:26,  1.75s/it]

 58%|█████▊    | 600/1026 [17:58<13:46,  1.94s/it]

 59%|█████▊    | 601/1026 [18:00<13:55,  1.97s/it]

 59%|█████▊    | 602/1026 [18:02<13:22,  1.89s/it]

 59%|█████▉    | 603/1026 [18:04<14:00,  1.99s/it]

 59%|█████▉    | 604/1026 [18:06<14:45,  2.10s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130729_6930.

 59%|█████▉    | 606/1026 [18:08<12:42,  1.81s/it]

 59%|█████▉    | 607/1026 [18:10<13:04,  1.87s/it]

 59%|█████▉    | 608/1026 [18:13<14:16,  2.05s/it]

 59%|█████▉    | 609/1026 [18:15<14:36,  2.10s/it]

 59%|█████▉    | 610/1026 [18:17<15:03,  2.17s/it]

 60%|█████▉    | 611/1026 [18:20<15:37,  2.26s/it]

 60%|█████▉    | 612/1026 [18:22<14:26,  2.09s/it]

 60%|█████▉    | 613/1026 [18:24<15:31,  2.25s/it]

 60%|█████▉    | 614/1026 [18:27<16:02,  2.33s/it]

 60%|█████▉    | 615/1026 [18:29<14:49,  2.16s/it]

 60%|██████    | 616/1026 [18:31<14:52,  2.18s/it]

 60%|██████    | 617/1026 [18:34<16:54,  2.48s/it]

 60%|██████    | 618/1026 [18:36<16:46,  2.47s/it]

 60%|██████    | 619/1026 [18:39<18:00,  2.66s/it]

 60%|██████    | 620/1026 [18:42<18:10,  2.68s/it]

 61%|██████    | 621/1026 [18:45<19:13,  2.85s/it]

 61%|██████    | 622/1026 [18:48<17:46,  2.64s/it]

 61%|██████    | 623/1026 [18:51<20:17,  3.02s/it]

 61%|██████    | 624/1026 [18:54<19:56,  2.98s/it]

 61%|██████    | 625/1026 [18:58<20:58,  3.14s/it]

 61%|██████    | 626/1026 [19:00<19:07,  2.87s/it]

 61%|██████    | 627/1026 [19:02<17:41,  2.66s/it]

 61%|██████    | 628/1026 [19:04<15:56,  2.40s/it]

 61%|██████▏   | 629/1026 [19:06<15:11,  2.30s/it]

 61%|██████▏   | 630/1026 [19:08<14:21,  2.17s/it]

 62%|██████▏   | 631/1026 [19:10<14:28,  2.20s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130730_3902.

 62%|██████▏   | 633/1026 [19:12<12:09,  1.86s/it]

 62%|██████▏   | 634/1026 [19:14<12:03,  1.85s/it]

 62%|██████▏   | 635/1026 [19:16<12:52,  1.98s/it]

 62%|██████▏   | 636/1026 [19:19<12:58,  2.00s/it]

 62%|██████▏   | 637/1026 [19:23<17:07,  2.64s/it]

 62%|██████▏   | 638/1026 [19:25<16:41,  2.58s/it]

 62%|██████▏   | 639/1026 [19:28<16:21,  2.54s/it]

 62%|██████▏   | 640/1026 [19:31<17:08,  2.67s/it]

 62%|██████▏   | 641/1026 [19:32<15:35,  2.43s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130802_621.

 63%|██████▎   | 643/1026 [19:34<12:47,  2.00s/it]

 63%|██████▎   | 644/1026 [19:36<12:40,  1.99s/it]

 63%|██████▎   | 645/1026 [19:39<13:07,  2.07s/it]

 63%|██████▎   | 646/1026 [19:41<13:05,  2.07s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130803_2863.

 63%|██████▎   | 648/1026 [19:43<11:20,  1.80s/it]

 63%|██████▎   | 649/1026 [19:45<11:28,  1.83s/it]

 63%|██████▎   | 650/1026 [19:47<11:17,  1.80s/it]

 63%|██████▎   | 651/1026 [19:48<11:16,  1.80s/it]

 64%|██████▎   | 652/1026 [19:50<11:25,  1.83s/it]

 64%|██████▎   | 653/1026 [19:52<11:28,  1.85s/it]

 64%|██████▎   | 654/1026 [19:54<11:35,  1.87s/it]

 64%|██████▍   | 655/1026 [19:56<11:37,  1.88s/it]

 64%|██████▍   | 656/1026 [19:58<12:09,  1.97s/it]

 64%|██████▍   | 657/1026 [20:00<11:47,  1.92s/it]

 64%|██████▍   | 658/1026 [20:02<12:04,  1.97s/it]

 64%|██████▍   | 659/1026 [20:04<11:54,  1.95s/it]

 64%|██████▍   | 660/1026 [20:06<11:20,  1.86s/it]

 64%|██████▍   | 661/1026 [20:08<11:55,  1.96s/it]

 65%|██████▍   | 662/1026 [20:10<11:41,  1.93s/it]

 65%|██████▍   | 663/1026 [20:11<11:12,  1.85s/it]

 65%|██████▍   | 664/1026 [20:13<11:11,  1.86s/it]

 65%|██████▍   | 665/1026 [20:14<08:15,  1.37s/it]
Fehler operands could not be broadcast together with shapes (51,48) (51,51)  bei Fall 20130804_266.

 65%|██████▍   | 666/1026 [20:15<09:03,  1.51s/it]

 65%|██████▌   | 667/1026 [20:17<09:30,  1.59s/it]

 65%|██████▌   | 668/1026 [20:19<10:03,  1.69s/it]

 65%|██████▌   | 669/1026 [20:21<10:20,  1.74s/it]

 65%|██████▌   | 670/1026 [20:23<10:37,  1.79s/it]

 65%|██████▌   | 671/1026 [20:25<10:28,  1.77s/it]

 65%|██████▌   | 672/1026 [20:26<10:41,  1.81s/it]

 66%|██████▌   | 673/1026 [20:28<10:46,  1.83s/it]

 66%|██████▌   | 674/1026 [20:30<10:39,  1.82s/it]

 66%|██████▌   | 675/1026 [20:32<10:16,  1.76s/it]

 66%|██████▌   | 676/1026 [20:34<10:35,  1.82s/it]

 66%|██████▌   | 677/1026 [20:36<10:47,  1.86s/it]

 66%|██████▌   | 678/1026 [20:37<10:40,  1.84s/it]

 66%|██████▌   | 679/1026 [20:38<07:50,  1.36s/it]
Fehler operands could not be broadcast together with shapes (48,51) (51,51)  bei Fall 20130804_1176.

 66%|██████▋   | 680/1026 [20:40<08:52,  1.54s/it]

 66%|██████▋   | 681/1026 [20:42<09:59,  1.74s/it]

 66%|██████▋   | 682/1026 [20:44<10:31,  1.83s/it]

 67%|██████▋   | 683/1026 [20:47<12:38,  2.21s/it]

 67%|██████▋   | 684/1026 [20:49<12:06,  2.12s/it]

 67%|██████▋   | 685/1026 [20:49<08:47,  1.55s/it]
Fehler operands could not be broadcast together with shapes (44,51) (51,51)  bei Fall 20130805_689.

 67%|██████▋   | 686/1026 [20:51<09:43,  1.72s/it]

 67%|██████▋   | 687/1026 [20:53<09:09,  1.62s/it]

 67%|██████▋   | 688/1026 [20:54<08:42,  1.55s/it]

 67%|██████▋   | 689/1026 [20:56<10:04,  1.79s/it]

 67%|██████▋   | 690/1026 [20:59<10:43,  1.92s/it]

 67%|██████▋   | 691/1026 [21:01<10:56,  1.96s/it]

 67%|██████▋   | 692/1026 [21:03<11:09,  2.00s/it]

 68%|██████▊   | 693/1026 [21:04<10:31,  1.90s/it]

 68%|██████▊   | 694/1026 [21:06<09:56,  1.80s/it]

 68%|██████▊   | 695/1026 [21:09<12:18,  2.23s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130806_422.

 68%|██████▊   | 697/1026 [21:11<10:15,  1.87s/it]

 68%|██████▊   | 698/1026 [21:13<10:13,  1.87s/it]

 68%|██████▊   | 699/1026 [21:15<10:27,  1.92s/it]

 68%|██████▊   | 700/1026 [21:17<11:01,  2.03s/it]

 68%|██████▊   | 701/1026 [21:20<11:09,  2.06s/it]

 68%|██████▊   | 702/1026 [21:21<10:47,  2.00s/it]

 69%|██████▊   | 703/1026 [21:24<11:31,  2.14s/it]

 69%|██████▊   | 704/1026 [21:26<11:29,  2.14s/it]

 69%|██████▊   | 705/1026 [21:28<10:50,  2.03s/it]

 69%|██████▉   | 706/1026 [21:29<10:14,  1.92s/it]

 69%|██████▉   | 707/1026 [21:31<09:56,  1.87s/it]

 69%|██████▉   | 708/1026 [21:33<09:31,  1.80s/it]

 69%|██████▉   | 709/1026 [21:34<09:14,  1.75s/it]

 69%|██████▉   | 710/1026 [21:36<09:16,  1.76s/it]

 69%|██████▉   | 711/1026 [21:38<09:02,  1.72s/it]

 69%|██████▉   | 712/1026 [21:40<09:21,  1.79s/it]

 69%|██████▉   | 713/1026 [21:42<09:43,  1.86s/it]

 70%|██████▉   | 714/1026 [21:42<07:08,  1.37s/it]
Fehler operands could not be broadcast together with shapes (51,49) (51,51)  bei Fall 20130806_1631.

 70%|██████▉   | 715/1026 [21:44<08:01,  1.55s/it]

 70%|██████▉   | 716/1026 [21:44<06:01,  1.17s/it]
Fehler operands could not be broadcast together with shapes (51,48) (51,51)  bei Fall 20130806_2052.

 70%|██████▉   | 717/1026 [21:46<07:03,  1.37s/it]

 70%|██████▉   | 718/1026 [21:48<07:42,  1.50s/it]

 70%|███████   | 719/1026 [21:48<05:47,  1.13s/it]
Fehler operands could not be broadcast together with shapes (44,51) (51,51)  bei Fall 20130806_2615.

 70%|███████   | 720/1026 [21:50<06:48,  1.33s/it]

 70%|███████   | 721/1026 [21:52<07:43,  1.52s/it]

 70%|███████   | 722/1026 [21:54<08:34,  1.69s/it]

 70%|███████   | 723/1026 [21:56<09:25,  1.87s/it]

 71%|███████   | 724/1026 [21:59<10:19,  2.05s/it]

 71%|███████   | 725/1026 [22:01<10:56,  2.18s/it]

 71%|███████   | 726/1026 [22:03<10:39,  2.13s/it]

 71%|███████   | 727/1026 [22:05<09:59,  2.01s/it]

 71%|███████   | 728/1026 [22:07<09:41,  1.95s/it]

 71%|███████   | 729/1026 [22:09<09:27,  1.91s/it]

 71%|███████   | 730/1026 [22:11<09:56,  2.02s/it]

 71%|███████   | 731/1026 [22:13<10:31,  2.14s/it]

 71%|███████▏  | 732/1026 [22:14<07:51,  1.60s/it]
Fehler operands could not be broadcast together with shapes (51,47) (51,51)  bei Fall 20130808_3808.

 71%|███████▏  | 733/1026 [22:16<08:26,  1.73s/it]

 72%|███████▏  | 734/1026 [22:18<08:51,  1.82s/it]

 72%|███████▏  | 735/1026 [22:19<08:17,  1.71s/it]

 72%|███████▏  | 736/1026 [22:21<08:15,  1.71s/it]

 72%|███████▏  | 737/1026 [22:23<08:15,  1.71s/it]

 72%|███████▏  | 738/1026 [22:25<08:32,  1.78s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130810_505.

 72%|███████▏  | 740/1026 [22:26<07:13,  1.52s/it]

 72%|███████▏  | 741/1026 [22:28<07:50,  1.65s/it]

 72%|███████▏  | 742/1026 [22:30<07:55,  1.67s/it]

 72%|███████▏  | 743/1026 [22:32<08:07,  1.72s/it]

 73%|███████▎  | 744/1026 [22:34<08:18,  1.77s/it]

 73%|███████▎  | 745/1026 [22:36<08:41,  1.86s/it]

 73%|███████▎  | 746/1026 [22:38<08:28,  1.82s/it]

 73%|███████▎  | 747/1026 [22:39<08:03,  1.73s/it]

 73%|███████▎  | 748/1026 [22:41<07:44,  1.67s/it]

 73%|███████▎  | 749/1026 [22:42<07:38,  1.66s/it]

 73%|███████▎  | 750/1026 [22:44<08:02,  1.75s/it]

 73%|███████▎  | 751/1026 [22:46<08:14,  1.80s/it]

 73%|███████▎  | 752/1026 [22:48<08:18,  1.82s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130810_1680.

 73%|███████▎  | 754/1026 [22:51<08:03,  1.78s/it]

 74%|███████▎  | 755/1026 [22:53<08:07,  1.80s/it]

 74%|███████▎  | 756/1026 [22:55<08:13,  1.83s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130810_1968.

 74%|███████▍  | 758/1026 [22:57<07:02,  1.58s/it]

 74%|███████▍  | 759/1026 [22:59<07:27,  1.68s/it]

 74%|███████▍  | 760/1026 [23:01<07:49,  1.76s/it]

 74%|███████▍  | 761/1026 [23:03<08:33,  1.94s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130812_1233.

 74%|███████▍  | 763/1026 [23:06<07:30,  1.71s/it]

 74%|███████▍  | 764/1026 [23:08<08:27,  1.94s/it]

 75%|███████▍  | 765/1026 [23:10<08:29,  1.95s/it]

 75%|███████▍  | 766/1026 [23:12<08:29,  1.96s/it]

 75%|███████▍  | 767/1026 [23:14<08:36,  1.99s/it]

 75%|███████▍  | 768/1026 [23:16<08:44,  2.03s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130812_3474.

 75%|███████▌  | 770/1026 [23:18<07:20,  1.72s/it]

 75%|███████▌  | 771/1026 [23:21<07:50,  1.85s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130812_4621.

 75%|███████▌  | 773/1026 [23:23<06:51,  1.63s/it]

 75%|███████▌  | 774/1026 [23:24<06:50,  1.63s/it]

 76%|███████▌  | 775/1026 [23:26<06:52,  1.64s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130813_486.

 76%|███████▌  | 777/1026 [23:29<06:25,  1.55s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130813_1722.

 76%|███████▌  | 779/1026 [23:30<05:31,  1.34s/it]

 76%|███████▌  | 780/1026 [23:32<05:53,  1.44s/it]

 76%|███████▌  | 781/1026 [23:34<06:54,  1.69s/it]

 76%|███████▌  | 782/1026 [23:36<07:07,  1.75s/it]

 76%|███████▋  | 783/1026 [23:38<07:08,  1.76s/it]

 76%|███████▋  | 784/1026 [23:40<07:16,  1.80s/it]

 77%|███████▋  | 785/1026 [23:42<07:45,  1.93s/it]

 77%|███████▋  | 786/1026 [23:44<07:30,  1.88s/it]

 77%|███████▋  | 787/1026 [23:46<07:22,  1.85s/it]

 77%|███████▋  | 788/1026 [23:47<07:11,  1.81s/it]

 77%|███████▋  | 789/1026 [23:49<07:09,  1.81s/it]

 77%|███████▋  | 790/1026 [23:51<07:15,  1.85s/it]

 77%|███████▋  | 791/1026 [23:53<07:40,  1.96s/it]

 77%|███████▋  | 792/1026 [23:55<07:44,  1.99s/it]

 77%|███████▋  | 793/1026 [23:57<07:32,  1.94s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130813_9052.

 77%|███████▋  | 795/1026 [23:59<06:19,  1.64s/it]

 78%|███████▊  | 796/1026 [24:01<06:34,  1.72s/it]

 78%|███████▊  | 797/1026 [24:03<06:39,  1.74s/it]

 78%|███████▊  | 798/1026 [24:05<06:56,  1.83s/it]

 78%|███████▊  | 799/1026 [24:07<07:04,  1.87s/it]

 78%|███████▊  | 800/1026 [24:09<07:16,  1.93s/it]

 78%|███████▊  | 801/1026 [24:11<06:59,  1.86s/it]

 78%|███████▊  | 802/1026 [24:13<07:28,  2.00s/it]

 78%|███████▊  | 803/1026 [24:15<07:49,  2.11s/it]

 78%|███████▊  | 804/1026 [24:18<08:10,  2.21s/it]

 78%|███████▊  | 805/1026 [24:20<07:40,  2.08s/it]

 79%|███████▊  | 806/1026 [24:23<09:36,  2.62s/it]

 79%|███████▊  | 807/1026 [24:25<08:55,  2.44s/it]

 79%|███████▉  | 808/1026 [24:27<08:04,  2.22s/it]

 79%|███████▉  | 809/1026 [24:30<08:26,  2.33s/it]

 79%|███████▉  | 810/1026 [24:32<08:18,  2.31s/it]

 79%|███████▉  | 811/1026 [24:34<08:02,  2.24s/it]

 79%|███████▉  | 812/1026 [24:36<07:51,  2.20s/it]

 79%|███████▉  | 813/1026 [24:40<09:30,  2.68s/it]

 79%|███████▉  | 814/1026 [24:42<09:01,  2.55s/it]

 79%|███████▉  | 815/1026 [24:44<08:06,  2.31s/it]

 80%|███████▉  | 816/1026 [24:46<07:48,  2.23s/it]

 80%|███████▉  | 817/1026 [24:48<07:35,  2.18s/it]

 80%|███████▉  | 818/1026 [24:50<07:21,  2.12s/it]

 80%|███████▉  | 819/1026 [24:52<07:01,  2.04s/it]

 80%|███████▉  | 820/1026 [24:54<06:57,  2.02s/it]

 80%|████████  | 821/1026 [24:56<06:35,  1.93s/it]

 80%|████████  | 822/1026 [24:56<04:50,  1.42s/it]
Fehler operands could not be broadcast together with shapes (48,51) (51,51)  bei Fall 20130819_7781.

 80%|████████  | 823/1026 [24:58<05:16,  1.56s/it]

 80%|████████  | 824/1026 [24:59<05:19,  1.58s/it]

 80%|████████  | 825/1026 [25:01<05:22,  1.60s/it]

 81%|████████  | 826/1026 [25:03<06:06,  1.83s/it]

 81%|████████  | 827/1026 [25:05<06:07,  1.85s/it]

 81%|████████  | 828/1026 [25:07<06:11,  1.88s/it]

 81%|████████  | 829/1026 [25:09<06:21,  1.94s/it]

 81%|████████  | 830/1026 [25:11<06:12,  1.90s/it]

 81%|████████  | 831/1026 [25:13<06:19,  1.95s/it]

 81%|████████  | 832/1026 [25:13<04:38,  1.44s/it]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130819_9175.

 81%|████████  | 833/1026 [25:15<04:52,  1.52s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130823_297.

 81%|████████▏ | 835/1026 [25:17<04:20,  1.36s/it]

 81%|████████▏ | 836/1026 [25:19<04:57,  1.57s/it]

 82%|████████▏ | 837/1026 [25:21<05:19,  1.69s/it]

 82%|████████▏ | 838/1026 [25:24<05:55,  1.89s/it]

 82%|████████▏ | 839/1026 [25:26<06:05,  1.95s/it]

 82%|████████▏ | 840/1026 [25:27<05:46,  1.86s/it]

 82%|████████▏ | 841/1026 [25:28<04:15,  1.38s/it]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130825_6494.

 82%|████████▏ | 842/1026 [25:29<04:45,  1.55s/it]

 82%|████████▏ | 843/1026 [25:31<05:04,  1.66s/it]

 82%|████████▏ | 844/1026 [25:33<05:01,  1.65s/it]

 82%|████████▏ | 845/1026 [25:35<05:07,  1.70s/it]

 82%|████████▏ | 846/1026 [25:37<05:20,  1.78s/it]

 83%|████████▎ | 847/1026 [25:38<05:14,  1.76s/it]

 83%|████████▎ | 848/1026 [25:40<05:13,  1.76s/it]

 83%|████████▎ | 849/1026 [25:42<05:19,  1.81s/it]

 83%|████████▎ | 850/1026 [25:44<05:25,  1.85s/it]

 83%|████████▎ | 851/1026 [25:46<05:35,  1.91s/it]

 83%|████████▎ | 852/1026 [25:48<05:23,  1.86s/it]

 83%|████████▎ | 853/1026 [25:50<05:29,  1.90s/it]

 83%|████████▎ | 854/1026 [25:52<05:25,  1.89s/it]

 83%|████████▎ | 855/1026 [25:54<05:29,  1.93s/it]

 83%|████████▎ | 856/1026 [25:56<05:36,  1.98s/it]

 84%|████████▎ | 857/1026 [25:58<05:50,  2.07s/it]

 84%|████████▎ | 858/1026 [26:00<05:36,  2.00s/it]

 84%|████████▎ | 859/1026 [26:02<05:28,  1.97s/it]

 84%|████████▍ | 860/1026 [26:04<05:20,  1.93s/it]

 84%|████████▍ | 861/1026 [26:06<05:18,  1.93s/it]

 84%|████████▍ | 862/1026 [26:06<03:52,  1.42s/it]
Fehler operands could not be broadcast together with shapes (50,51) (51,51)  bei Fall 20130901_1924.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130901_2963.

 84%|████████▍ | 864/1026 [26:06<02:48,  1.04s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130901_4480.

 84%|████████▍ | 865/1026 [26:08<03:24,  1.27s/it]

 84%|████████▍ | 866/1026 [26:10<03:54,  1.47s/it]

 85%|████████▍ | 867/1026 [26:12<04:22,  1.65s/it]

 85%|████████▍ | 868/1026 [26:14<04:21,  1.66s/it]

 85%|████████▍ | 869/1026 [26:15<04:17,  1.64s/it]

 85%|████████▍ | 870/1026 [26:17<04:05,  1.57s/it]

 85%|████████▍ | 871/1026 [26:20<05:19,  2.06s/it]

 85%|████████▍ | 872/1026 [26:22<05:00,  1.95s/it]

 85%|████████▌ | 873/1026 [26:23<04:53,  1.92s/it]

 85%|████████▌ | 874/1026 [26:24<03:28,  1.37s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130907_508.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130907_533.

 85%|████████▌ | 876/1026 [26:26<03:09,  1.26s/it]

 85%|████████▌ | 877/1026 [26:28<03:41,  1.49s/it]

 86%|████████▌ | 878/1026 [26:30<04:27,  1.81s/it]

 86%|████████▌ | 879/1026 [26:32<04:43,  1.93s/it]

 86%|████████▌ | 880/1026 [26:34<04:43,  1.94s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130907_2837.

 86%|████████▌ | 882/1026 [26:35<03:22,  1.41s/it]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130907_2898.

 86%|████████▌ | 883/1026 [26:37<03:43,  1.56s/it]

 86%|████████▌ | 884/1026 [26:39<04:01,  1.70s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130907_3619.

 86%|████████▋ | 886/1026 [26:41<03:32,  1.52s/it]

 86%|████████▋ | 887/1026 [26:43<04:04,  1.76s/it]

 87%|████████▋ | 888/1026 [26:45<04:12,  1.83s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130908_1644.

 87%|████████▋ | 890/1026 [26:47<03:29,  1.54s/it]

 87%|████████▋ | 891/1026 [26:49<04:00,  1.78s/it]

 87%|████████▋ | 892/1026 [26:52<04:36,  2.06s/it]

 87%|████████▋ | 893/1026 [26:55<04:56,  2.23s/it]

 87%|████████▋ | 894/1026 [26:57<04:58,  2.27s/it]

 87%|████████▋ | 895/1026 [26:59<04:55,  2.25s/it]

 87%|████████▋ | 896/1026 [27:01<04:42,  2.17s/it]

 87%|████████▋ | 897/1026 [27:04<04:56,  2.30s/it]

 88%|████████▊ | 898/1026 [27:06<04:54,  2.30s/it]

 88%|████████▊ | 899/1026 [27:08<04:33,  2.16s/it]

 88%|████████▊ | 900/1026 [27:10<04:19,  2.06s/it]

 88%|████████▊ | 901/1026 [27:12<04:17,  2.06s/it]

 88%|████████▊ | 902/1026 [27:14<04:08,  2.01s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130909_7419.

 88%|████████▊ | 904/1026 [27:16<03:28,  1.71s/it]

 88%|████████▊ | 905/1026 [27:18<03:40,  1.82s/it]

 88%|████████▊ | 906/1026 [27:20<03:58,  1.99s/it]

 88%|████████▊ | 907/1026 [27:22<03:46,  1.90s/it]

 88%|████████▊ | 908/1026 [27:24<04:11,  2.13s/it]

 89%|████████▊ | 909/1026 [27:27<04:08,  2.12s/it]

 89%|████████▊ | 910/1026 [27:29<04:04,  2.10s/it]

 89%|████████▉ | 911/1026 [27:31<04:02,  2.10s/it]

 89%|████████▉ | 912/1026 [27:33<03:59,  2.10s/it]

 89%|████████▉ | 913/1026 [27:35<03:58,  2.11s/it]

 89%|████████▉ | 914/1026 [27:37<04:01,  2.16s/it]

 89%|████████▉ | 915/1026 [27:40<04:06,  2.22s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130910_11525.

 89%|████████▉ | 917/1026 [27:41<03:19,  1.83s/it]

 89%|████████▉ | 918/1026 [27:43<03:18,  1.84s/it]

 90%|████████▉ | 919/1026 [27:45<03:14,  1.82s/it]

 90%|████████▉ | 920/1026 [27:47<03:32,  2.01s/it]

 90%|████████▉ | 921/1026 [27:50<03:31,  2.01s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130911_5616.

 90%|████████▉ | 923/1026 [27:52<02:58,  1.73s/it]

 90%|█████████ | 924/1026 [27:54<03:01,  1.78s/it]

 90%|█████████ | 925/1026 [27:54<02:09,  1.28s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130912_2887.

 90%|█████████ | 926/1026 [27:55<02:22,  1.43s/it]

 90%|█████████ | 927/1026 [27:57<02:33,  1.55s/it]

 90%|█████████ | 928/1026 [27:59<02:44,  1.68s/it]

 91%|█████████ | 929/1026 [28:01<02:50,  1.75s/it]

 91%|█████████ | 930/1026 [28:03<02:55,  1.83s/it]

 91%|█████████ | 931/1026 [28:05<02:59,  1.89s/it]

 91%|█████████ | 932/1026 [28:08<03:15,  2.08s/it]

 91%|█████████ | 933/1026 [28:12<04:05,  2.64s/it]

 91%|█████████ | 934/1026 [28:14<03:52,  2.52s/it]

 91%|█████████ | 935/1026 [28:14<02:43,  1.80s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130916_3202.

 91%|█████████ | 936/1026 [28:14<02:00,  1.34s/it]

 91%|█████████▏| 937/1026 [28:14<01:26,  1.03it/s]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130916_6040.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130916_8899.

 91%|█████████▏| 938/1026 [28:16<01:49,  1.24s/it]

 92%|█████████▏| 939/1026 [28:18<02:09,  1.49s/it]

 92%|█████████▏| 940/1026 [28:20<02:22,  1.66s/it]

 92%|█████████▏| 941/1026 [28:23<02:39,  1.87s/it]

 92%|█████████▏| 942/1026 [28:25<02:50,  2.03s/it]

 92%|█████████▏| 943/1026 [28:27<02:45,  2.00s/it]

 92%|█████████▏| 944/1026 [28:29<02:50,  2.08s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130918_11415.

 92%|█████████▏| 946/1026 [28:31<02:19,  1.74s/it]

 92%|█████████▏| 947/1026 [28:34<02:30,  1.90s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20130925_2290.

 92%|█████████▏| 949/1026 [28:36<02:07,  1.66s/it]

 93%|█████████▎| 950/1026 [28:38<02:16,  1.80s/it]

 93%|█████████▎| 951/1026 [28:40<02:29,  2.00s/it]

 93%|█████████▎| 952/1026 [28:41<01:50,  1.49s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130926_5430.

 93%|█████████▎| 953/1026 [28:43<02:06,  1.73s/it]

 93%|█████████▎| 954/1026 [28:43<01:34,  1.31s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130926_7751.

 93%|█████████▎| 955/1026 [28:46<01:55,  1.63s/it]

 93%|█████████▎| 956/1026 [28:46<01:25,  1.22s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20130926_8315.

 93%|█████████▎| 957/1026 [28:46<01:04,  1.08it/s]
Fehler operands could not be broadcast together with shapes (47,51) (51,51)  bei Fall 20130927_2068.

 93%|█████████▎| 958/1026 [28:48<01:25,  1.25s/it]

 93%|█████████▎| 959/1026 [28:50<01:39,  1.48s/it]

 94%|█████████▎| 960/1026 [28:52<01:44,  1.58s/it]

 94%|█████████▎| 961/1026 [28:54<01:47,  1.65s/it]

 94%|█████████▍| 962/1026 [28:56<01:53,  1.77s/it]

 94%|█████████▍| 963/1026 [28:58<01:54,  1.82s/it]

 94%|█████████▍| 964/1026 [29:00<01:55,  1.86s/it]

 94%|█████████▍| 965/1026 [29:02<01:56,  1.91s/it]

 94%|█████████▍| 966/1026 [29:03<01:50,  1.85s/it]

 94%|█████████▍| 967/1026 [29:05<01:49,  1.85s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131017_1159.

 94%|█████████▍| 969/1026 [29:08<01:32,  1.62s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131019_450.

 95%|█████████▍| 971/1026 [29:10<01:22,  1.50s/it]

 95%|█████████▍| 972/1026 [29:12<01:32,  1.72s/it]

 95%|█████████▍| 973/1026 [29:14<01:39,  1.88s/it]

 95%|█████████▍| 974/1026 [29:17<01:47,  2.06s/it]

 95%|█████████▌| 975/1026 [29:17<01:15,  1.47s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131020_4862.

 95%|█████████▌| 976/1026 [29:19<01:27,  1.74s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131020_6336.

 95%|█████████▌| 978/1026 [29:21<01:11,  1.50s/it]

 95%|█████████▌| 979/1026 [29:24<01:33,  1.99s/it]

 96%|█████████▌| 980/1026 [29:27<01:37,  2.12s/it]

 96%|█████████▌| 981/1026 [29:29<01:35,  2.12s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131023_6651.

 96%|█████████▌| 983/1026 [29:31<01:19,  1.86s/it]

 96%|█████████▌| 984/1026 [29:34<01:22,  1.96s/it]

 96%|█████████▌| 985/1026 [29:35<01:17,  1.88s/it]

 96%|█████████▌| 986/1026 [29:37<01:14,  1.87s/it]

 96%|█████████▌| 987/1026 [29:40<01:21,  2.09s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131026_2947.

 96%|█████████▋| 989/1026 [29:42<01:09,  1.87s/it]

 96%|█████████▋| 990/1026 [29:45<01:11,  1.99s/it]

 97%|█████████▋| 991/1026 [29:47<01:13,  2.11s/it]

 97%|█████████▋| 992/1026 [29:49<01:12,  2.14s/it]

 97%|█████████▋| 993/1026 [29:52<01:11,  2.18s/it]

 97%|█████████▋| 994/1026 [29:54<01:11,  2.23s/it]

 97%|█████████▋| 995/1026 [29:56<01:05,  2.10s/it]

 97%|█████████▋| 996/1026 [29:58<01:04,  2.17s/it]

 97%|█████████▋| 997/1026 [30:00<01:01,  2.13s/it]

 97%|█████████▋| 998/1026 [30:02<01:01,  2.19s/it]

 97%|█████████▋| 999/1026 [30:05<01:05,  2.43s/it]

 97%|█████████▋| 1000/1026 [30:06<00:46,  1.78s/it]
Fehler operands could not be broadcast together with shapes (45,51) (51,51)  bei Fall 20131027_7707.

 98%|█████████▊| 1001/1026 [30:10<01:03,  2.54s/it]

 98%|█████████▊| 1002/1026 [30:13<01:00,  2.54s/it]

 98%|█████████▊| 1003/1026 [30:15<01:00,  2.65s/it]

 98%|█████████▊| 1005/1026 [30:16<00:39,  1.88s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131029_2279.
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131029_2496.

 98%|█████████▊| 1006/1026 [30:18<00:40,  2.05s/it]

 98%|█████████▊| 1007/1026 [30:20<00:40,  2.13s/it]

 98%|█████████▊| 1008/1026 [30:23<00:40,  2.22s/it]

 98%|█████████▊| 1009/1026 [30:26<00:42,  2.50s/it]

 98%|█████████▊| 1010/1026 [30:28<00:39,  2.50s/it]

 99%|█████████▊| 1011/1026 [30:31<00:36,  2.43s/it]

 99%|█████████▊| 1012/1026 [30:33<00:32,  2.31s/it]

 99%|█████████▊| 1013/1026 [30:37<00:36,  2.84s/it]

 99%|█████████▉| 1014/1026 [30:40<00:33,  2.82s/it]

 99%|█████████▉| 1015/1026 [30:43<00:31,  2.87s/it]

 99%|█████████▉| 1016/1026 [30:45<00:28,  2.83s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131110_1547.

 99%|█████████▉| 1018/1026 [30:48<00:18,  2.32s/it]

 99%|█████████▉| 1019/1026 [30:50<00:15,  2.21s/it]

 99%|█████████▉| 1020/1026 [30:52<00:13,  2.25s/it]

100%|█████████▉| 1021/1026 [30:54<00:10,  2.09s/it]

100%|█████████▉| 1022/1026 [30:55<00:07,  2.00s/it]

100%|█████████▉| 1023/1026 [30:57<00:05,  1.96s/it]
Fehler zero-size array to reduction operation maximum which has no identity bei Fall 20131206_3206.

100%|██████████| 1026/1026 [31:00<00:00,  1.81s/it]
Fehler [Errno 2] No such file or directory: b'/vols/satellite/home/lenk/data/HACI_track_data/track_20131222_1858.nc' bei Fall 20131222_1858.

In [573]:
mae_df = pd.DataFrame({'MAE':track_maes,
                       'technique':techniques,
                       'track_id':track_ids,
                       'time_index':time_idx})
In [574]:
mae_df.to_csv("/vols/satellite/home/lenk/proj/2019-01_trackingstudie/data/track_mae_2013.csv",index=False,float_format="%.3f")
In [580]:
mae_df.head()
Out[580]:
MAE technique track_id time_index
0 2.336191 simple 20130130_2438 [-30,-25]
1 2.365507 simple 20130130_2438 [-25,-20]
2 2.149352 simple 20130130_2438 [-20,-15]
3 2.313221 simple 20130130_2438 [-15,-10]
4 2.314652 simple 20130130_2438 [-10,-5]
In [581]:
mae_df = mae_df.replace('0_1','[-30,-25]')
mae_df = mae_df.replace('1_2','[-25,-20]')
mae_df = mae_df.replace('2_3','[-20,-15]')
mae_df = mae_df.replace('3_4','[-15,-10]')
mae_df = mae_df.replace('4_5','[-10,-5]')
mae_df = mae_df.replace('5_6','[-5,0]')
mae_df = mae_df.replace('6_7','[0,5]')
mae_df = mae_df.replace('7_8','[5,10]')
mae_df = mae_df.replace('8_9','[10,15]')
mae_df = mae_df.replace('9_10','[15,20]')
mae_df = mae_df.replace('10_11','[20,25]')
mae_df = mae_df.replace('11_12','[25,30]')
mae_df = mae_df.replace('simple','simple flow')
mae_df = mae_df.replace('farnebaeck',u'Farnebäck')
mae_df = mae_df.replace('tvl1','TV-L1')
mae_df = mae_df.replace('dis_fast','DIS fast')
mae_df = mae_df.replace('dis_medium','DIS medium')
mae_df = mae_df.replace('dis_superfast','DIS superfast')
mae_df = mae_df.replace('xcorr','cross. corr.')
mae_df = mae_df.replace('euler','Euler')
In [582]:
mae_df.head()
Out[582]:
MAE technique track_id time_index
0 2.336191 simple flow 20130130_2438 [-30,-25]
1 2.365507 simple flow 20130130_2438 [-25,-20]
2 2.149352 simple flow 20130130_2438 [-20,-15]
3 2.313221 simple flow 20130130_2438 [-15,-10]
4 2.314652 simple flow 20130130_2438 [-10,-5]
In [583]:
import seaborn as sns
sns.set_context("talk")
In [585]:
fig,ax = plt.subplots(1,1,figsize=(16,10))
sns.boxplot(x='time_index',y='MAE',data=mae_df[mae_df.technique!='farnebaeck_opt'],hue='technique',ax=ax)
ax.set_xlabel("time relative to CI time / min")
# Put the legend out of the figure
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.,title="tracking technique")
ax.set_title("Tracking error for all cases 2013")
plt.savefig("/vols/satellite/home/lenk/mae_2031.pdf",bbox_inches='tight')
In [586]:
mean_mae = mae_df.groupby(by=['technique']).mean()
In [587]:
mean_mae.head()
Out[587]:
MAE
technique
DIS fast 1.490587
DIS medium 1.593262
DIS superfast 1.501844
Euler 2.413184
Farnebäck 1.567702
In [596]:
fig,ax = plt.subplots(1,1,figsize=(36,9))
sns.violinplot(x='technique',y='MAE',data=mae_df[mae_df.time_index=='[-30,-25]'],ax=ax)
Out[596]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f6082ee0e50>
In [605]:
fig,ax = plt.subplots(1,1,figsize=(36,9))
ax = sns.violinplot(x='technique',y='MAE',data=mae_df[mae_df.time_index=='[-25,-20]'])
In [628]:
fig,ax = plt.subplots(1,1,figsize=(16,9))
ax = sns.pointplot(x="time_index", 
                   y="MAE", 
                   data=mae_df, 
                   hue='technique',
                   capsize=0.1,
                   ci=95,
                   markers=["o", "x","+","v","^","<","s","d"],
#                    linestyles=["-",
#                                "-.",
#                                ":",
#                                (0, (3, 5, 1, 5)),
#                                (0, (5, 10)),
#                                (0, (5, 5)),
#                                (0, (5,1)),
#                                (0, (3, 1, 1, 1))],
                  linewidth=0.8,
                  dodge=True)
plt.legend(bbox_to_anchor=(1.05, 1), loc=2, borderaxespad=0.,title="tracking technique")
ax.set_title("Tracking error for all cases 2013")
plt.savefig("/vols/satellite/home/lenk/mae_2013.pdf",bbox_inches='tight')
In [600]:
means = mae_df.groupby(by=['technique','time_index']).mean()
In [602]:
stds = mae_df.groupby(by=['technique','time_index']).std()
In [603]:
stds
Out[603]:
MAE
technique time_index
DIS fast [-10,-5] 0.488871
[-15,-10] 0.489691
[-20,-15] 0.488559
[-25,-20] 0.490783
[-30,-25] 0.493541
... ... ...
simple flow [10,15] 0.905966
[15,20] 0.909282
[20,25] 0.909739
[25,30] 0.917200
[5,10] 0.902121

96 rows × 1 columns

In [604]:
fig,ax = plt.subplots(1,1,figsize=(16,9))

means.loc['DIS fast'].plot()
Out[604]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f607bd2f710>
In [82]:
import datetime as dt
In [ ]:
track_mres = []

for m in track_maes:
    mre_df = m.copy()
    
    for c in mre_df.columns:
        mre_df[c] = mre_df[c] / mre_df.euler
    track_mres.append(mre_df)
In [106]:
 
Out[106]:
[]
In [ ]:
track_mae = []

for m in track_maes:
    mae_df = m.copy()
    
    for c in mre_df.columns:
        mae_df[c] = mae_df[c] / mae_df.euler
    track_mae.append(mae_df)
In [ ]:
mean_mres = {k:[] for k in track_mres[0].columns}
In [ ]:
for m in track_mres:
    mm = m.mean()
    
    for c in mm.index:
        mean_mres[c].append(mm[c])
In [ ]:
mean_mres_df = pd.DataFrame(mean_mres,index= track_ids)
In [109]:
mean_mres_df.head()
Out[109]:
simple farnebaeck farnebaeck_opt tvl1 tvl1_opt dis_fast dis_medium dis_superfast xcorr euler
20130129_1005 0.886439 0.648395 0.657927 0.638917 1.071071 0.611737 0.669533 0.625360 1.076711 1.0
20130131_1964 1.234443 0.965820 0.963061 0.934757 1.361509 0.921329 0.967688 0.939062 1.551131 1.0
20130318_634 0.689115 0.485089 0.476539 0.531210 0.903761 0.464926 0.470085 0.473237 0.967617 1.0
20130412_1661 0.675918 0.420638 0.416735 0.429144 0.731707 0.412227 0.406976 0.422097 0.994142 1.0
20130412_1683 0.496443 0.332807 0.334615 0.352104 0.554991 0.328197 0.309939 0.326001 0.730371 1.0
In [110]:
mean_mres_df.median()
Out[110]:
simple            0.951929
farnebaeck        0.707308
farnebaeck_opt    0.708399
tvl1              0.715438
tvl1_opt          1.056059
dis_fast          0.682849
dis_medium        0.705726
dis_superfast     0.693665
xcorr             1.058045
euler             1.000000
dtype: float64
In [111]:
mean_mres_df.to_csv("/vols/satellite/home/lenk/proj/2019-01_trackingstudie/data/mean_mre_tracking.csv")
In [92]:
mean_maes = {k:[] for k in track_mres[0].columns}
---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last)
<ipython-input-92-5fc1253dee4f> in <module>
----> 1 mean_maes = {k:[] for k in track_maes[0].columns}

IndexError: list index out of range
In [97]:
track_maes
Out[97]:
[]
In [165]:
for m in track_maes:
    mm = m.mean()
    
    for c in mm.index:
        mean_maes[c].append(mm[c])
In [203]:
mean_maes_df = pd.DataFrame(mean_maes,index=track_ids)
In [141]:
mean_maes_df.head()
Out[141]:
Unnamed: 0 simple farnebaeck farnebaeck_opt tvl1 tvl1_opt dis_fast dis_medium dis_superfast xcorr euler
0 0 2.843 1.478 1.468 1.555 2.722 1.414 1.497 1.451 3.598 3.712
1 1 1.272 0.748 0.741 1.123 1.897 0.748 0.711 0.744 1.554 1.438
2 2 3.629 2.711 2.725 2.750 3.313 2.717 2.752 2.718 3.685 3.848
3 3 5.370 3.145 3.143 3.163 3.775 3.132 3.242 3.176 5.292 5.830
4 4 4.213 2.149 2.131 2.170 2.626 2.146 2.121 2.163 4.287 4.735
In [204]:
mean_maes_df.median()
Out[204]:
simple            2.273023
farnebaeck        1.766916
farnebaeck_opt    1.765966
tvl1              1.786924
tvl1_opt          2.656110
dis_fast          1.723043
dis_medium        1.763874
dis_superfast     1.747709
xcorr             2.687672
euler             2.584499
dtype: float64

MAE

Als nächstes sehen wir uns mal die MAE-Werte der Trackingverfahren für die HACI-Fälle des Jahres 2013 an.

DIS-Flow

In [112]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(mean_mres_df.index, mean_mres_df.dis_medium,label="DIS medium")
ax.plot(mean_mres_df.index, mean_mres_df.dis_fast,label="DIS fast")
ax.plot(mean_mres_df.index, mean_mres_df.dis_superfast,label="DIS ultrafast")
ax.axhline(1,c='k',label='eulersche Referenz')
ax.set_ylim(0,1.4)
ax.set_xlabel("Tracknummer")
ax.set_ylabel("MAE relativ zu Euler")
ax.set_title("DIS Flow")
ax.legend()
Out[112]:
<matplotlib.legend.Legend at 0x7ff67f235690>

Der DIS-Flow hat für die meisten Fälle die kleinsten MAE-Werte von allen getesten Verfahren. Bei einigen Fällen ist der Fehler allerdings größer als bei der eulerschen Referenz. Dafür könnte es eine Reihe von Gründen geben:

  1. die Advektionskorrektur mit dem DIS-Flow ist zu stark
  2. der abgeleitete Fluss ist falsch, weil die Szene ungeeignet ist
  3. die Änderungen zwischen den Zeitschritten ist klein
In [113]:
dis_sf_mres = mean_mres_df.dis_superfast.copy()
dis_f_mres = mean_mres_df.dis_fast.copy()
dis_m_mres = mean_mres_df.dis_medium.copy()
In [114]:
dis_sf_mres[dis_sf_mres.idxmax()] = np.nan # Ausreißer
dis_f_mres[dis_f_mres.idxmax()] = np.nan # Ausreißer
dis_m_mres[dis_m_mres.idxmax()] = np.nan # Ausreißer
In [115]:
md_dis_sf = dis_sf_mres - dis_sf_mres.mean()
md_dis_f = dis_f_mres - dis_f_mres.mean()
md_dis_m = dis_m_mres - dis_m_mres.mean()
In [116]:
lst = 'none'
In [117]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(md_dis_sf,alpha=0.6,label='DIS, ultraschnell',marker='o',linestyle=lst,color='blue')
ax.plot(md_dis_f,alpha=0.6,label='DIS, schnell',marker='D',linestyle=lst,color='red')
ax.plot(md_dis_m,alpha=0.6,label='DIS, mittel',marker='s',linestyle=lst,color='green')
ax.set_ylim(-1,1)
ax.axhline(0,color='k',linestyle='dashed')
ax.set_title("DIS-MAE relativ zu Euler, Abweichung vom Mittelwert")
ax.legend()
Out[117]:
<matplotlib.legend.Legend at 0x7ff66e2c1c90>

Der DIS-Ansatz mit dem Parametersatz "schnell" hat meistens die geringsten Fehler und die ultraschnelle Variante meistens die größten Fehler.

Farnebäck

In [118]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(mean_mres_df.index, mean_mres_df.farnebaeck,label="Farnebäck")
ax.plot(mean_mres_df.index, mean_mres_df.farnebaeck_opt,label="Farnebäck, optimiert")
ax.axhline(1,c='k',label='eulersche Referenz')
ax.set_ylim(0,1.5)
ax.set_xlabel("Tracknummer")
ax.set_ylabel("MAE relativ zu Euler")
ax.set_title("Farnebäckansatz")
ax.legend()
Out[118]:
<matplotlib.legend.Legend at 0x7ff66dabb710>
In [119]:
fbc_mres = mean_mres_df.farnebaeck.copy()
In [120]:
fbco_mres = mean_mres_df.farnebaeck_opt.copy()
In [121]:
fbc_mres[fbc_mres.idxmax()] = np.nan # Ausreißer
fbco_mres[fbco_mres.idxmax()] = np.nan # Ausreißer
In [122]:
mean_deviation = fbc_mres - fbc_mres.mean()
mean_deviation_opt = fbco_mres - fbco_mres.mean()
In [123]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(mean_deviation,alpha=0.8,label='Farnebäck',marker='o',linestyle=lst,color='blue')
ax.plot(mean_deviation_opt,alpha=0.5,label='Farnebäck optimiert',marker='D',linestyle=lst,color='red')
ax.set_ylim(-1,1)
ax.axhline(0,color='k',linestyle='dashed')
ax.set_title("Farnebäck-MAE relativ zu Euler, Abweichung vom Mittelwert")
ax.legend()
Out[123]:
<matplotlib.legend.Legend at 0x7ff66d530fd0>

Die MAE-Werte des Farnebäckverfahrens sind im gleichen Bereich wie die des DIS-Verfahrens, allerdings meistens etwas höher. Die Verfahren scheinen sich aber ähnlich zu sein, weil die gleichen Fälle eher niedrige oder große MAE-Werte haben. Die "optimierte" Variante ist meist recht ähnlich wie die Variante mit den Standardparametern. Sie scheint bei einem Fall viel schlechter zu funktionieren. Aber ansonsten ist ihr Fehler meist etwas geringer.

TV-L1

In [124]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(mean_mres_df.index, mean_mres_df.tvl1,label="Dual TV-L1")
ax.plot(mean_mres_df.index, mean_mres_df.tvl1_opt,label="Dual TV-L1, optimiert")
ax.axhline(1,c='k',label='eulersche Referenz')
ax.set_ylim(0,1.5)
ax.set_xlabel("Tracknummer")
ax.set_ylabel("MAE relativ zu Euler")
ax.set_title("Dual TV-L1")
ax.legend()
Out[124]:
<matplotlib.legend.Legend at 0x7ff66cacfc10>
In [125]:
tvl1_mres = mean_mres_df.tvl1.copy()
tvl1_opt_mres = mean_mres_df.tvl1_opt.copy()
In [126]:
tvl1_mres[tvl1_mres.idxmax()] = np.nan # Ausreißer
tvl1_opt_mres[tvl1_opt_mres.idxmax()] = np.nan # Ausreißer
In [127]:
md_tvl1 = tvl1_mres - tvl1_mres.mean()
md_tvl1_opt = tvl1_opt_mres - tvl1_opt_mres.mean()
In [128]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(md_dis_sf,alpha=0.6,label='TV-L1',marker='o',linestyle=lst,color='blue')
ax.plot(md_dis_f,alpha=0.6,label='TV-L1, optimiert',marker='D',linestyle=lst,color='red')
ax.set_ylim(-1,1)
ax.axhline(0,color='k',linestyle='dashed')
ax.set_title("TV-L1-MAE relativ zu Euler, Abweichung vom Mittelwert")
ax.legend()
Out[128]:
<matplotlib.legend.Legend at 0x7ff66c5ac6d0>
In [129]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(mean_mres_df.index, mean_mres_df.xcorr,label="Kreuzkorrelation")
ax.axhline(1,c='k',label='eulersche Referenz')
ax.set_ylim(0,1.5)
ax.set_xlabel("Tracknummer")
ax.set_ylabel("MAE relativ zu Euler")
ax.set_title("Kreuzkorrelation")
ax.legend()
Out[129]:
<matplotlib.legend.Legend at 0x7ff658cf2f10>
In [130]:
min_mae_method = []
max_mae_method = []
min_mae_value = []
max_mae_value = []

for i, r in mean_maes_df.iterrows():
    min_mae_method.append(r.idxmin())
    max_mae_method.append(r.idxmax())
    min_mae_value.append(r.min())
    max_mae_value.append(r.max())
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-130-53452f47f2d1> in <module>
      4 max_mae_value = []
      5 
----> 6 for i, r in mean_maes_df.iterrows():
      7     min_mae_method.append(r.idxmin())
      8     max_mae_method.append(r.idxmax())

NameError: name 'mean_maes_df' is not defined
In [131]:
min_mre_method = []
max_mre_method = []
min_mre_value = []
max_mre_value = []

for i, r in mean_mres_df.iterrows():
    min_mre_method.append(r.idxmin())
    max_mre_method.append(r.idxmax())
    min_mre_value.append(r.min())
    max_mre_value.append(r.max())
In [ ]:
mae_evaluation_df = pd.DataFrame({'best_method':min_mae_method,
                                  'worst_method':max_mae_method,
                                  'best_method_value':min_mae_value,
                                  'worst_method_value':max_mae_value})
In [132]:
mre_evaluation_df = pd.DataFrame({'best_method':min_mre_method,
                                  'worst_method':max_mre_method,
                                  'best_method_value':min_mre_value,
                                  'worst_method_value':max_mre_value})
In [ ]:
mae_evaluation_df.best_method.value_counts()
In [ ]:
mae_evaluation_df.worst_method.value_counts()
In [ ]:
mae_evaluation_df.groupby('best_method').median()
In [235]:
mae_evaluation_df.groupby('worst_method').median()
Out[235]:
best_method_value worst_method_value
worst_method
euler 1.715109 2.963511
simple 1.805180 3.046149
tvl1 43.109778 253.696889
tvl1_opt 1.615811 2.712603
xcorr 1.799453 3.227558
In [133]:
mre_evaluation_df.best_method.value_counts()
Out[133]:
dis_fast          346
dis_medium        126
euler              62
dis_superfast      46
tvl1               35
simple             34
farnebaeck_opt     19
farnebaeck          7
xcorr               4
Name: best_method, dtype: int64
In [134]:
best_count_sum = mae_evaluation_df.best_method.value_counts().sum()
print(best_count_sum)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-134-b625bfdf258c> in <module>
----> 1 best_count_sum = mae_evaluation_df.best_method.value_counts().sum()
      2 print(best_count_sum)

NameError: name 'mae_evaluation_df' is not defined
In [135]:
best_count_relative = {idx:[] for idx in mre_evaluation_df.best_method.value_counts().index}

for idx in mre_evaluation_df.best_method.value_counts().index:
    v = mre_evaluation_df.best_method.value_counts()[idx]
    
    best_count_relative[idx] = (v / best_count_sum) * 100
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-135-f19efa151999> in <module>
      4     v = mre_evaluation_df.best_method.value_counts()[idx]
      5 
----> 6     best_count_relative[idx] = (v / best_count_sum) * 100

NameError: name 'best_count_sum' is not defined
In [136]:
best_count_relative
Out[136]:
{'dis_fast': [],
 'dis_medium': [],
 'euler': [],
 'dis_superfast': [],
 'tvl1': [],
 'simple': [],
 'farnebaeck_opt': [],
 'farnebaeck': [],
 'xcorr': []}
In [137]:
worst_count_sum = mae_evaluation_df.worst_method.value_counts().sum()
print(worst_count_sum)
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-137-0cbb174d00f4> in <module>
----> 1 worst_count_sum = mae_evaluation_df.worst_method.value_counts().sum()
      2 print(worst_count_sum)

NameError: name 'mae_evaluation_df' is not defined
In [138]:
worst_count_relative = {idx:[] for idx in mre_evaluation_df.worst_method.value_counts().index}

for idx in mre_evaluation_df.worst_method.value_counts().index:
    v = mre_evaluation_df.worst_method.value_counts()[idx]
    
    worst_count_relative[idx] = (v / best_count_sum) * 100
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-138-ea5bcf020dd9> in <module>
      4     v = mre_evaluation_df.worst_method.value_counts()[idx]
      5 
----> 6     worst_count_relative[idx] = (v / best_count_sum) * 100

NameError: name 'best_count_sum' is not defined
In [139]:
worst_count_relative
Out[139]:
{'tvl1_opt': [], 'xcorr': [], 'euler': [], 'simple': []}
In [140]:
rel_val = ((mae_evaluation_df.best_method.value_counts()['dis_fast'] + mae_evaluation_df.best_method.value_counts()['dis_medium']) / mae_evaluation_df.best_method.value_counts().sum()) * 100
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-140-09965e7e2b29> in <module>
----> 1 rel_val = ((mae_evaluation_df.best_method.value_counts()['dis_fast'] + mae_evaluation_df.best_method.value_counts()['dis_medium']) / mae_evaluation_df.best_method.value_counts().sum()) * 100

NameError: name 'mae_evaluation_df' is not defined

Hier sieht das Bild etwas komplizierter aus. Bei den meisten Fällen funktionieren die Verfahren besser als die eulersche Referenz. Allerdings gibt es auch

NameError: name 'mae_evaluation_df' is not defined

Fälle, wo das nicht der Fall ist. Ein Fall sticht besonders heraus. E ist der Fall 20130620_2634. Hier scheinen wohl Daten zu fehlen.

Die Methoden, die am bei den meisten Fällen den kleinsten MAE-Wert haben, sind die schnelle und die mittelschnelle Variante des DIS-Verfahrens. Sie sind die besten Verfahren bei

TypeError: unsupported format string passed to list.format

 % der Fälle. Bei den anderen Fällen funktionieren allerdings auch das TV-L1- (

TypeError: unsupported format string passed to list.format

 %), das Farnebäckverfahren (

TypeError: unsupported format string passed to list.format

 %), und die superschnelle DIS-Variante (

TypeError: unsupported format string passed to list.format

 %) am besten.

Die Methoden mit den höchsten MAE-Werten sind in

TypeError: unsupported format string passed to list.format

 % der Fälle die "optimierte" TV-L1-Variante, die Kreuzkorrelation (

TypeError: unsupported format string passed to list.format

 %), die euelersche Referenz (

TypeError: unsupported format string passed to list.format

 %) und die einfache Verfahren (

TypeError: unsupported format string passed to list.format

 %)

In [169]:
mean_maes_df.to_csv("/vols/satellite/home/lenk/proj/2019-01_trackingstudie/tracking_experiments/MAE_oflow.csv".format(local_data_path),
                    float_format = "%.3f")
In [141]:
mean_mres_df.to_csv("/vols/satellite/home/lenk/proj/2019-01_trackingstudie/tracking_experiments/relative_MAE_oflow.csv".format(local_data_path),
                    float_format = "%.3f")
In [2]:
mean_maes_df = pd.read_csv("/vols/satellite/home/lenk/proj/2019-01_trackingstudie/tracking_experiments/MAE_oflow.csv")
In [142]:
mean_mres_df = pd.read_csv("/vols/satellite/home/lenk/proj/2019-01_trackingstudie/tracking_experiments/relative_MAE_oflow.csv")

Es sieht also so aus, als könnten die schnellen und mittelschnellen DIS-Varianten das Standardverfahren werden. Allerdings sollten wir uns mal ansehen, wie die Fälle aussehen, wo sie nicht funktionieren.

Problemfälle

Zuerst sehen wir uns den Fall an, wo alle Trackingverfahren Probleme hatten.

20130609_699

In [143]:
case_data = haci_objects[(haci_objects.date_str == "20130609") & (haci_objects.id==699)]
In [144]:
start_time = pd.Timestamp("{}T{}".format(case_data.date_str.values[0],case_data.time.values[0]))
print(start_time)
2013-06-09 06:00:00
In [145]:
tlist = pd.date_range(start = start_time - pd.Timedelta("30min"),
                      end = start_time + pd.Timedelta("30min"),
                      freq = "5min")
In [146]:
sat_data = {ch:[] for ch in ['IR_108','CTTH_HEIGHT']}

for i,t in enumerate(tlist):
    sat_obs = lsd.load_satellite_data(t,'IR_108')
    
    sat_data['CTTH_HEIGHT'].append(mst.get_nwcsaf_prod('CTTH_HEIGHT',t,calibrate=True))
        
    px_corr = go.parallax_correct_msg(sat_obs,slon,slat,sat_data['CTTH_HEIGHT'][i],'std','eu','rss',3)
        
    sat_data['IR_108'].append(px_corr)
Region suggests use of hdf file
Region suggests use of hdf file
/vols/satellite/home/lenk/lib/tropy/l15_msevi/msevi.py:659: RuntimeWarning: divide by zero encountered in true_divide
  np.log(C1 * nu_c[ch]**3./self.rad[ch] + 1) - B[ch]) / A[ch])
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
In [147]:
tracking_base = []

for sd in sat_data['IR_108']:
    data_cutout = cutout_box(sd,case_data.l0_msg_eu.values[0], case_data.c0_msg_eu.values[0], 51)
    tracking_base.append(data_cutout)
In [148]:
fig,ax = plt.subplots(4,4,figsize=(16,16),sharex=True,sharey=True)
axs=ax.ravel()

for i, tb in enumerate(tracking_base):
    tb_plot = axs[i].imshow(tb,vmin=210,vmax=300,cmap=emap)
    axs[i].set_title("t = {} min".format(i*5 - 30))
    fc.colourbar(tb_plot)
fig.delaxes(ax[3,1])
fig.delaxes(ax[3,2])
fig.delaxes(ax[3,3])

Bei diesem Fall fehlen tatsächlich die Daten eines Zeitschrittes. Also sollten wir diesen Fall eventuell ausschließen.

Fälle mit relativ hohen MAE-Werte

Außer dem Ausreißer mit den fehlenden Satellitendaten, gibt es noch einige Fälle, bei denen die Fehlerwerte relativ hoch sind.

In [149]:
track_ids = []

for i,case in haci_objects_2013.iterrows():
    tid = "{}_{}".format(case.date.strftime("%Y%m%d"), case.id)
    
    track_ids.append(tid)
In [182]:
len(track_ids)
Out[182]:
679
In [183]:
len(mean_mres_df.index)
Out[183]:
679

Wir sehen uns mal die Abweichung vom Mittelwert und die Standardabweichung an. Fälle deren Werte höher als drei oder zwei Standardabweichungen sollten wir uns mal ansehen.

In [155]:
mean_dev = mean_mres_df.dis_fast - mean_mres_df.dis_fast.mean()
In [158]:
mean_mre = mean_mres_df.dis_fast.mean()
In [160]:
sd_mre = mean_mres_df.dis_fast.std()
In [176]:
mean_dev.head()
Out[176]:
0   -0.106622
1    0.202378
2   -0.253622
3   -0.306622
4   -0.390622
Name: dis_fast, dtype: float64
In [174]:
fig,ax = plt.subplots(1,1,figsize=(16,7.5))
ax.plot(mean_dev,label='DIS, schnell',marker='D',linestyle=lst,color='k')
ax.set_ylim(-1,1)
ax.axhline(0,color='b')
ax.set_title("DIS-MAE relativ zu Euler, Abweichung vom Mittelwert")
ax.legend()
ax.axhline(sd_mre,c='g')
ax.axhline(-sd_mre,c='g')
ax.axhline(2*sd_mre,c='orange')
ax.axhline(-2*sd_mre,c='orange')
ax.axhline(3*sd_mre,c='r')
ax.axhline(-3*sd_mre,c='r')
Out[174]:
<matplotlib.lines.Line2D at 0x7ff647818a10>

Es gibt tatsächlich einige Fälle, wo die Abweichungen vom Mittelwert höher sind als zwei oder drei Standardabweichungen.

In [178]:
ueber_2sd = mean_dev[mean_dev > 2 * sd_mre]
In [179]:
ueber_2sd
Out[179]:
73     0.622378
82     0.588378
102    0.701378
103    0.497378
104    0.595378
202    0.590378
204    0.452378
205    0.574378
206    0.705378
207    0.471378
208    0.638378
209    0.742378
210    0.509378
211    0.627378
213    0.604378
214    0.525378
221    0.645378
223    0.701378
224    0.580378
277    0.604378
278    0.485378
282    0.458378
319    0.652378
323    0.475378
326    0.691378
330    0.498378
571    0.739378
Name: dis_fast, dtype: float64
In [180]:
ueber_3sd = mean_dev[mean_dev > 3 * sd_mre]
In [181]:
ueber_3sd
Out[181]:
102    0.701378
206    0.705378
209    0.742378
223    0.701378
326    0.691378
571    0.739378
Name: dis_fast, dtype: float64

Zuerst sehen wir uns mal die Fälle mit einer Abweichung von mehr als 3σ an.

Fälle mit einer Abweichung von mehr als 3σ

In [185]:
ueber_3sd.index
Out[185]:
Int64Index([102, 206, 209, 223, 326, 571], dtype='int64')
In [196]:
track_ids_ueber_3sd =[]

for i in ueber_3sd.index:
    track_ids_ueber_3sd.append(track_ids[i])
In [197]:
track_ids_ueber_3sd
Out[197]:
['20130528_1409',
 '20130620_1254',
 '20130620_1482',
 '20130620_2580',
 '20130725_714',
 '20130824_496']
In [211]:
track_data = {}

for tid in track_ids_ueber_3sd:
    case_data = haci_objects[(haci_objects.date_str == "{}".format(tid.split("_")[0])) &
                             (haci_objects.id==int(tid.split("_")[1]))]
    
    start_time = pd.Timestamp("{}T{}".format(case_data.date_str.values[0],case_data.time.values[0]))
    tlist = pd.date_range(start = start_time - pd.Timedelta("30min"),
                      end = start_time + pd.Timedelta("30min"),
                      freq = "5min")
    
    sat_data = {ch:[] for ch in ['IR_108','CTTH_HEIGHT']}

    for i,t in enumerate(tlist):
        sat_obs = lsd.load_satellite_data(t,'IR_108')

        sat_data['CTTH_HEIGHT'].append(mst.get_nwcsaf_prod('CTTH_HEIGHT',t,calibrate=True))

        px_corr = go.parallax_correct_msg(sat_obs,slon,slat,sat_data['CTTH_HEIGHT'][i],'std','eu','rss',3)

        sat_data['IR_108'].append(px_corr)
        
    track_cutout = []

    for sd in sat_data['IR_108']:
        data_cutout = cutout_box(sd,case_data.l0_msg_eu.values[0], case_data.c0_msg_eu.values[0], 51)
        track_cutout.append(data_cutout)
        
    track_data[tid] = track_cutout
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
In [214]:
for tid in track_data.keys():
    fig,ax = plt.subplots(4,4,figsize=(16,16),sharex=True,sharey=True)
    axs=ax.ravel()

    for i, tb in enumerate(track_data[tid]):
        tb_plot = axs[i].imshow(tb,vmin=210,vmax=300,cmap=emap)
        axs[i].set_title("t = {} min".format(i*5 - 30))
        fc.colourbar(tb_plot)
    fig.delaxes(ax[3,1])
    fig.delaxes(ax[3,2])
    fig.delaxes(ax[3,3])
    plt.suptitle("{}".format(tid))

Es sieht so aus als würden folgende Fälle Probleme machen:

  1. Fälle mit vielen kleinen eher stationären Wolken: kaum sichtbare Bewegung, Bewegungsfeld schwer abzuleiten
  2. Fälle mit eher isolierten eher stationären Wolken: kaum Bewegung, daher schwer Bewegungsfeld abzuleiten
  3. Fälle mit wenig Texturunterschieden: Bewegungsableitung schwierig

Um das zu untermauern sehen wir uns noch ie Fälle mit einer Abweichung von mehr als 2σ an.

Abweichung mehr als 2σ

In [116]:
track_ids_ueber_2sd =[]

for i in ueber_2sd.index:
    track_ids_ueber_2sd.append(track_ids[i])
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-116-56e60a7efb58> in <module>
      1 track_ids_ueber_2sd =[]
      2 
----> 3 for i in ueber_2sd.index:
      4     track_ids_ueber_2sd.append(track_ids[i])

NameError: name 'ueber_2sd' is not defined
In [216]:
track_data = {}

for tid in track_ids_ueber_2sd:
    case_data = haci_objects[(haci_objects.date_str == "{}".format(tid.split("_")[0])) &
                             (haci_objects.id==int(tid.split("_")[1]))]
    
    start_time = pd.Timestamp("{}T{}".format(case_data.date_str.values[0],case_data.time.values[0]))
    tlist = pd.date_range(start = start_time - pd.Timedelta("30min"),
                      end = start_time + pd.Timedelta("30min"),
                      freq = "5min")
    
    sat_data = {ch:[] for ch in ['IR_108','CTTH_HEIGHT']}

    for i,t in enumerate(tlist):
        sat_obs = lsd.load_satellite_data(t,'IR_108')

        sat_data['CTTH_HEIGHT'].append(mst.get_nwcsaf_prod('CTTH_HEIGHT',t,calibrate=True))

        px_corr = go.parallax_correct_msg(sat_obs,slon,slat,sat_data['CTTH_HEIGHT'][i],'std','eu','rss',3)

        sat_data['IR_108'].append(px_corr)
        
    track_cutout = []

    for sd in sat_data['IR_108']:
        data_cutout = cutout_box(sd,case_data.l0_msg_eu.values[0], case_data.c0_msg_eu.values[0], 51)
        track_cutout.append(data_cutout)
        
    track_data[tid] = track_cutout
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
ERROR:  /vols/altair/datasets/eumcst//msevi_rss/l15_hdf/eu/2013/07/23/msg?-sevi-20130723t1435z-l15hdf-rss-eu.c2.h5  does not exist!
... reading  /tmp/hrit4466399050/H-000-MSG1__-MSG1_RSS____-IR_108___-000007___-201307231435-__
... reading  /tmp/hrit4466399050/H-000-MSG1__-MSG1_RSS____-IR_108___-000008___-201307231435-__

Combine segments

Do calibration
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
Region suggests use of hdf file
In [ ]:
for tid in track_data.keys():
    fig,ax = plt.subplots(4,4,figsize=(16,16),sharex=True,sharey=True)
    axs=ax.ravel()

    for i, tb in enumerate(track_data[tid]):
        tb_plot = axs[i].imshow(tb,vmin=210,vmax=300,cmap=emap)
        axs[i].set_title("t = {} min".format(i*5 - 30))
        fc.colourbar(tb_plot)
    fig.delaxes(ax[3,1])
    fig.delaxes(ax[3,2])
    fig.delaxes(ax[3,3])
    plt.suptitle("{}".format(tid))

Das oben geschriebene gilt auch hier. Fälle mit eher stationären Wolken und mit sehr großen gleichförmigen Bereichen sind schwer mit automatischen Verfahren zu tracken. Aber für die meisten Fälle funktionierte es recht gut.